From bf4bcbd4f87288b90e92a095bcdea27fc6d3c89f Mon Sep 17 00:00:00 2001 From: jdg Date: Fri, 3 Sep 2021 17:40:06 +0200 Subject: [PATCH] First commit 06/07/1996 --- CDS/EJE1.COM | Bin 0 -> 58 bytes CDS/EJEMPLO1.ASM | 43 +++++ CDS/EJEMPLO1.EXE | Bin 0 -> 826 bytes CDS/EJEMPLO1.MAP | 8 + CDS/EJEMPLO2.ASM | 55 ++++++ CDS/EJEMPLO2.COM | Bin 0 -> 66 bytes CDS/EJEMPLO3.ASM | 110 ++++++++++++ CDS/EJEMPLO3.COM | Bin 0 -> 271 bytes CDS/EJEMPLO4.ASM | 61 +++++++ CDS/EJEMPLO4.COM | Bin 0 -> 61 bytes E/ASM.DOC | 395 +++++++++++++++++++++++++++++++++++++++++ E/ASM.EXE | Bin 0 -> 77824 bytes E/M.EXE | Bin 0 -> 543 bytes E/M.MAP | 8 + LETC.CPP | 195 ++++++++++++++++++++ LETRERO.ASM | 204 +++++++++++++++++++++ LETRERO.JD | 200 +++++++++++++++++++++ M.ASM | 21 +++ M.EXE | Bin 0 -> 543 bytes NONAME00.EXE | Bin 0 -> 6417 bytes NONAME00.TFA | Bin 0 -> 143 bytes V/BROWSE.ASM | 454 +++++++++++++++++++++++++++++++++++++++++++++++ V/BROWSE.COM | Bin 0 -> 958 bytes 23 files changed, 1754 insertions(+) create mode 100644 CDS/EJE1.COM create mode 100644 CDS/EJEMPLO1.ASM create mode 100644 CDS/EJEMPLO1.EXE create mode 100644 CDS/EJEMPLO1.MAP create mode 100644 CDS/EJEMPLO2.ASM create mode 100644 CDS/EJEMPLO2.COM create mode 100644 CDS/EJEMPLO3.ASM create mode 100644 CDS/EJEMPLO3.COM create mode 100644 CDS/EJEMPLO4.ASM create mode 100644 CDS/EJEMPLO4.COM create mode 100644 E/ASM.DOC create mode 100644 E/ASM.EXE create mode 100644 E/M.EXE create mode 100644 E/M.MAP create mode 100644 LETC.CPP create mode 100644 LETRERO.ASM create mode 100644 LETRERO.JD create mode 100644 M.ASM create mode 100644 M.EXE create mode 100644 NONAME00.EXE create mode 100644 NONAME00.TFA create mode 100644 V/BROWSE.ASM create mode 100644 V/BROWSE.COM diff --git a/CDS/EJE1.COM b/CDS/EJE1.COM new file mode 100644 index 0000000000000000000000000000000000000000..c71382d69594e9b0c7da25f8ea4e6045a4b7e764 GIT binary patch literal 58 zcmV-A0LB04900TewhOWzw*bu$vQY1OT*5%^|n|2Db;f006pA7|jsF Qtw?WdVIWO)Ze(vEB!*EHa{vGU literal 0 HcmV?d00001 diff --git a/CDS/EJEMPLO1.ASM b/CDS/EJEMPLO1.ASM new file mode 100644 index 0000000..6421b91 --- /dev/null +++ b/CDS/EJEMPLO1.ASM @@ -0,0 +1,43 @@ +segmento SEGMENT para PUBLIC 'CODE' + ASSUME DS:segmento, CS:segmento + ORG 100h +principal PROC NEAR + + call Borra + + mov ah, 02h + mov dh, 11 + mov dl, 30 + mov bh, 00h + int 10h + + mov ah, 09h + mov dx, OFFSET MensajeSaludo + int 21h + + mov ah, 00h + int 16h + + call Borra + + mov ah, 4ch + int 21h + +principal ENDP + +Borra PROC NEAR + + mov ax, 0600h + mov bh, 07h + mov cx, 0000h + mov dx, 184fh + int 10h + + ret + +Borra ENDP + +MensajeSaludo DB '­Hola Mundo!$' + +segmento ENDS + END principal diff --git a/CDS/EJEMPLO1.EXE b/CDS/EJEMPLO1.EXE new file mode 100644 index 0000000000000000000000000000000000000000..3acfe1f532d65a62cf636df0b06e4d583341dbb4 GIT binary patch literal 826 zcmeZ`vSMUnU|>)H;{X4F1PCxPFxY{q-vL=gV3AQ`Gz5la2)vMC*uu1pdz0LDhO+`& yICtqXo>kn!a8~RE3&R$lvx++y*tWCpWMJ6kFL74j@LG@joJ0lR(!7*>MHK*>O&Z() literal 0 HcmV?d00001 diff --git a/CDS/EJEMPLO1.MAP b/CDS/EJEMPLO1.MAP new file mode 100644 index 0000000..e200667 --- /dev/null +++ b/CDS/EJEMPLO1.MAP @@ -0,0 +1,8 @@ + + Start Stop Length Name Class + + 00000H 00139H 0013AH SEGMENTO CODE + +Program entry point at 0000:0100 +Warning: No stack + diff --git a/CDS/EJEMPLO2.ASM b/CDS/EJEMPLO2.ASM new file mode 100644 index 0000000..e2c670e --- /dev/null +++ b/CDS/EJEMPLO2.ASM @@ -0,0 +1,55 @@ +segmento SEGMENT + ASSUME DS:segmento + ORG 100h +principal PROC NEAR + + call Borra + + mov ah, 02h + mov dh, 11 + mov dl, 30 + mov bh, 00h + int 10h + + mov ah, 09h + mov dx, OFFSET MensajeSaludo + int 21h + + mov ah, 00h + int 16h + + call Borra + + mov ah, 4ch + int 21h + +principal ENDP + +Borra PROC NEAR + + push ax ; Se almacenan en la pila los registros que va a utilizar + push bx ; la subrutina. El valor de SP disminuye en 4 * 2 = 8 + push cx ; unidades + push dx + + mov ax, 0600h ; Se borra la pantalla + mov bh, 07h + mov cx, 0000h + mov dx, 184fh + int 10h + + pop dx ; Se recuperan los valores de los registros, de forma que + pop cx ; al volver el control de la ejecuci¢n al m¢dulo principal + pop bx ; ‚stos almacenen los valores que pose¡an antes de la + pop ax ; llamada al procedimiento. SP se incrementa en 4 * 2 = 8 + ; unidades + + ret + +Borra ENDP + +MensajeSaludo DB '­Hola Mundo!$' + +segmento ENDS + END principal + \ No newline at end of file diff --git a/CDS/EJEMPLO2.COM b/CDS/EJEMPLO2.COM new file mode 100644 index 0000000000000000000000000000000000000000..3c53c212475fa21f8127de51318baa6727678531 GIT binary patch literal 66 zcmV-I0KNa{900TewhOWzw*bu$vQY1OT*5%^^@zQBt@72Db;f006pA Y7|jq`SzB1ctw?WdVIWO)Ze(vEBsrKECjbBd literal 0 HcmV?d00001 diff --git a/CDS/EJEMPLO3.ASM b/CDS/EJEMPLO3.ASM new file mode 100644 index 0000000..3ab7fec --- /dev/null +++ b/CDS/EJEMPLO3.ASM @@ -0,0 +1,110 @@ +segmento SEGMENT + ASSUME DS:segmento + ORG 100h +principal PROC NEAR + + mov ax, OFFSET Cadena1 + push ax + mov al, 1eh + push ax + + call VerCadena + + mov ah, 00h ; Se acepta una tecla + int 16h + + mov ax, OFFSET Cadena2 + push ax + mov al, 21h + push ax + + call VerCadena + + mov ah, 00h ; Se acepta una tecla + int 16h + + mov ax, OFFSET Cadena3 + push ax + mov al, 34h + push ax + + call VerCadena + + mov ah, 00h ; Se acepta una tecla + int 16h + + mov ax, OFFSET Cadena4 + push ax + mov al, 42h + push ax + + call VerCadena + + mov ah, 00h ; Se acepta una tecla + int 16h + + mov ax, OFFSET Fin + push ax + mov al, 07h + push ax + + call VerCadena + + mov ah, 00h ; Se acepta una tecla + int 16h + + mov ah, 4ch + int 21h + +principal ENDP + +VerCadena PROC NEAR + + push bp + mov bp, sp + + push bx ; Se almacenan en la pila los registros que va a utilizar + push cx ; la subrutina. El valor de SP disminuye en 3 * 2 = 6 + push dx ; unidades + ; Por otro lado, cuando se sabe que el registro AX es el + ; empleado para pasar los par metros, no es necesario + ; salvarlo + + + mov ax, 0600h ; Se borra la pantalla empleando el atributo + mov bh, [bp+4] ; pasado como par metro mediante el registro AL, + mov cx, 0000h ; almacenado ahora en la pila y recuperado con + mov dx, 184fh ; la instrucci¢n MOV BH, [BP+4] + int 10h + + mov ah, 02h ; Se posiciona el cursor en (25,11) + mov bh, 00h + mov dh, 11 + mov dl, 25 + int 10h + + mov ah, 09h + mov dx, [bp+6] ; El desplazamiento de la cadena que se va a visualizar + int 21h ; se mueve a DX + + pop dx ; Se recuperan los valores de los registros, de forma que + pop cx ; al volver el control de la ejecuci¢n al m¢dulo principal + pop bx ; ‚stos almacenen los valores que pose¡an antes de la + ; llamada al procedimiento. SP se incrementa en 3 * 2 = 6 + ; unidades + + pop bp ; Se restaura BP + + ret 4 + +VerCadena ENDP + +Cadena1 DB 'Primera cadena que se visualiza$' +Cadena2 DB 'Segunda cadena que se visualiza$' +Cadena3 DB 'Tercera cadena que se visualiza$' +Cadena4 DB 'Cuarta cadena que se visualiza$' +Fin DB 'Fin del programa ejemplo$' + +segmento ENDS + END principal + \ No newline at end of file diff --git a/CDS/EJEMPLO3.COM b/CDS/EJEMPLO3.COM new file mode 100644 index 0000000000000000000000000000000000000000..16c82eb3f9bd3147a8f6c31f926c68a7380240e7 GIT binary patch literal 271 zcmdl{#u%_cF5ra&!xo0KVmqb*d5Qrqj3B&iK%Pm!3l#|O8j$A{@Inm2`v&B(2fW|_ z^S1b$RSfNZ6C4<{gMqE9j%6nU!!Cb`vjSU~wli$w-XsZRadwBXomGsAjE+6T!VplD znVVXasF0kPlA4#OP*|F(P@JkzmRVeyn3GwRs1lr-UYeJJTRtSUC>fuA=hDQYl0*fZ f=DTI)DWs(4C=?XsrxzvWCMu+6rREmo{#)bi1)#e9`Il4@5rzL1s5LX19NxEOFgW NV-K+~FbFU(001l*8BG8H literal 0 HcmV?d00001 diff --git a/E/ASM.DOC b/E/ASM.DOC new file mode 100644 index 0000000..11fea96 --- /dev/null +++ b/E/ASM.DOC @@ -0,0 +1,395 @@ + + + + + + + + + + + + + THE ARROWSOFT ASSEMBLER + + Public Domain Version 1.00D + + + User's Guide + + + + + + + + + + + The Arrowsoft Assembler Program and Manual are both + Copyright (C) 1986 by Arrowsoft Systems, Inc. + 554 West Sixth Avenue + Larkview, MO 66069 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Arrowsoft Assembler v1.00 User's Guide + + + INTRODUCTION + + Thank you for trying out the public domain version of our + Arrowsoft Assembler. We feel that the best way to alert you, the + programmer, to our fine line of professional products is to let + you use one. Once you have experienced the high quality and ease + of use of this free product, we hope that you will contact us + regarding our other software (our address is on the cover of this + manual). + + You will no doubt notice that this manual is not exhaustive; in + fact, it includes the least amount of information we felt we + could include without robbing the program of its usefulness. + There are two reasons for the brevity of this manual: First, we + have targeted professional software developers with our products, + and we suspect that an experienced professional will have no + trouble figuring out how to use the Arrowsoft Assembler with the + information given; second, the program is, after all, free and we + feel that the quality of this assembler will more that compensate + you for the time you spend learning to use it. + + Please note that this is NOT a supported product. If you contact + us, we will be happy to discuss our line of software but we will + NOT answer questions about the Arrowsoft Assembler. + + Again, we thank you for giving our product a try. + + (NOTE: 'Microsoft' and 'Microsoft Macro Assembler' are trademarks + of Microsoft Corporation. 'Arrowsoft', 'Arrowsoft Professional + Assembler' and 'Super Link' are trademarks of Arrowsoft Systems, + Inc.) + + + + OVERVIEW + + The Arrowsoft Assembler takes as its input 8086, 8088, 80186 and + 80286 assembly language source files and produces relocatable + object modules which may be linked and run under the MS-DOS and + PC-DOS operating systems. The syntax of the input files is a + superset of that accepted by the Microsoft Macro Assembler + (versions 3.0 and later). In fact, most programs written for the + Microsoft product should assemble without modification with the + Arrowsoft Assembler. + + The remaining sections of this manual will cover, in this order, + assembler command line options, input language specifications, + linking and execution of assembled object modules, and assembler + error messages. + + + + INVOKING THE ARROWSOFT ASSEMBLER + + You may run the Arrowsoft Assembler interactively or directly + from the DOS command line. To invoke the assembler + interactively, simply type + + + + -1- + + + Arrowsoft Assembler v1.00 User's Guide + + + asm + + at the DOS prompt and follow the ensuing instructions. To run + the assembler non-interactively, use the following syntax: + + asm source [,object] [,list] [,xref] [options] [;] + + where 'source' is a filespec for the source file (default + extension .ASM), 'object' is a filespec for the object file + (default extension .OBJ), 'list' is a filespec for the listing + file (default extension .LST) and 'xref' is a filespec for the + cross-reference file (default extension .CRF). Note that all + filespecs may consist of a drive letter, a pathname, a filename + and an extension. If the object file is not specified, the + assembler will use the source filename with the .OBJ extension. + If the list and cross-reference files are not specified, the + assembler will not produce them. Finally, the semicolon (;) will + force the assembler to assume default values for any unspecified + parameters. + + + + OPTION CODES + + The options list consists of a sequence of option codes. These + option codes consist of a slash (/) or dash (-) followed by one + or more letters, case being insignificant. Most of these options + are compatible with Microsoft conventions. + + /A Write segments in alphabetical order + /Bnumber Set buffer size + /Dsymbol Define assembler symbol + /E Generate 8087/80287 emulator code + /Ipath Set 'include' search path + /ML Case sensitive internal labels + /MX Case sensitive external and public labels + /MU Convert labels to uppercase + /R Generate 8087/80287 floating point code + /S Write segments in source code order + /X Include false conditionals in listing + /Z Display error lines on screen + + + Many of these command line options are self explanatory; for + whose which aren't, see the descriptions below: + + + /B Set Buffer Size + + Sets the size of the buffer used to hold the source file during + assembly. The 'number' is the number of 1K pages reserved for + use as a buffer. You may set the buffer size to any value + between 1K and 63K; default buffer size is 32K. Note that a + larger buffer can speed assembly of large files considerably. + + + /E Generate 8087/80287 Emulator Code + + + + -2- + + + Arrowsoft Assembler v1.00 User's Guide + + + If you are writing programs for use with the 8087/80287 numeric + processor on a machine which does not have the processor, and you + have an 8087/80287 emulator library available, the /E option + directs the assembler to generate code for the emulator. + + + /I Set 'include' file search paths + + You may direct the assembler to search up to 5 directories for + 'include' files by including a '/Ipath' command for EACH of + them. For example, to set the search paths '\bin\lib' and + '\asm\lib', include the following in your options list: + /I\bin\lib/I\asm\lib. + + + /R + + This option directs the assembler to generate floating point code + for the 8087/80287 numeric processor. Note that programs + assembled with the '/R' option will run ONLY on machines which + have an 8087/80287 installed. + + + + ARROWSOFT ASSEMBLY LANGUAGE + + As we mentioned earlier, the Arrowsoft Assembly Language is a + superset of the well-known Microsoft Macro Assembler Language. We + modeled our system after Microsoft's for two reasons: First, the + language has a flexible and moderately powerful macro facility; + second, and for this public domain project most important, there + is a plethora of third-party books which explain how to program + using the Microsoft product. We recommend that you purchase one + of these guides if you are not familiar with 8086 assembly + language. If you would like to take advantage of the many + extensions to the Microsoft Language we have implemented in the + Arrowsoft Assembler, you must do one of two things: Try to figure + them out for yourself (using experimentation, disassembly or + anything else you can think of); or you can contact us about + purchasing the Arrowsoft Professional Assembler, which includes + the complete documentation. Again, please DO NOT CALL us about + the Arrowsoft Assembler; we will not answer any questions or + provide clues as to how to access the assembler's advanced + features. + + + + LINKING AND EXECUTING ARROWSOFT OBJECT MODULES + + The Arrowsoft Assembler produces relocatable object modules which + are compatible with the Microsoft 8086 Object Linker (versions + 3.0 and later). This means that programs assembled by the + Arrowsoft Assembler may be linked with other Microsoft + Linker-compatible programs generated by other assemblers and + compilers. If you need more information on how to use the + Microsoft 8086 Object Linker, see your DOS or Microsoft language + manual. + + + + -3- + + + Arrowsoft Assembler v1.00 User's Guide + + + By the way, we would like you to know about Arrowsofts Super Link + 8086/8086 Object Link Utility. Super Link is a full-service + overlaying linker which is fully compatible with the Microsoft + 8086 Object Linker, yet much faster and far more versatile. + Contact us at the address on the cover of this manual for more + information. + + + + ASSEMBLER ERROR MESSAGES + + An Arrowsoft Assembler error report consists of three parts: A + source file line number, an error number and a terse error + description. In most cases, the error messages, in spite of + their brevity, are self explanatory. However, for those few + messages which require addtional elaboration, we offer the + following explanations: + + + 2 Internal error + + This message will appear only if an error occurred within the + assembler itself. If you see this message, please send an + assembly listing of the source file and any other relevant + information (DOS version, assembler version, etc.) to the address + on the cover of this manual. + + + 68 Can't reach with segment reg + + You have not issued the appropriate ASSUME directive. + + + 99 Line too long expanding + + Expanding an EQU-defined symbol would result in a line too long + for the assembler to handle. Check for inadvertent recursion in + the symbol. + + + Out of Memory + + Either the source file exceeds the 64K limit of the assembler or + the symbol table exceeds its allocation. If this condition + occurs, try assembling without creating list or cross-reference + files. If this doesn't work, try dividing your source code into + several smaller source files and assembling them separately. The + resulting code may then be linked with a link utility. (Again, + we can't resist pointing out that the Arrowsoft Professional + Assembler uses ALL available memory for the assembly process; in + fact, it will assemble a file of arbitrary size, regardless of + memory limitations.) + + + Internal Error + + See the explanation for error number 2 above. + + + + -4- + + + Arrowsoft Assembler v1.00 User's Guide + + + + + THE ARROWSOFT PROFESSIONAL ASSEMBLER + + Our real reason for giving you this program free of charge is to + encourage you to purchase our commercial product, the Arrowsoft + Professional Assembler. The program you have now differs from the + full program in only three respects: (1) It includes no + documentation for those language features which extend the + Microsoft Macro Assembly Language (although they are implemented + by the public domain version); (2) the maximum input file size is + limited to 64K bytes; and (3) it is not supported via our 24 hour + toll-free help line (in fact, it is not supported at all by us). + With these 3 exceptions, the program you now have is identical to + the Professional Assembler. + + If you decide you'd like to purchase the Arrowsoft Professional + Assembler, send a postcard requesting our catalog to the address + on the cover of this manual. Our catalog will show you our + entire line of professional software development products and + will convince you that our quality and prices are as competitive + as you will find anywhere. + + + + CONCLUDING REMARKS AND CREDITS + + Again, we would like to thank you for trying our product. We + hope that the remarks we've made concerning our programming + products (Arrowsoft Professional Assembler and Super Link 8086 + Object Linker) have piqued your curiosity enough that you'll + write to us for more information. Further, we hope that actually + using one of our products has convinced you of our dedication to + quality and performance. Finally, we hope to welcome you to our + growing family of satisfied customers. + + Even if you don't buy anything from us, you can do us a favor. + We want you to distribute this product to all of your friends by + any means possible. You may post it to bulletin boards, offer it + through your computer club or just copy it and pass it around. + We only ask that (1) you charge nothing for the software beyond + reasonable copying and disk costs and (2) that you distribute the + two files (ASM.EXE and ASM.DOC) together and without + modification. + + The Arrowsoft Assembler was written by Kaplan 'Kap' Morovitz and + tested by the programming staff at Arrowsoft. Since 'Kap' writes + only in assembly language and C, this manual was written by Stan + Goldwyn-Benton. + + + + + + + + + + + + -5- + + \ No newline at end of file diff --git a/E/ASM.EXE b/E/ASM.EXE new file mode 100644 index 0000000000000000000000000000000000000000..1a9ef3214373e3c5acb97b9aa4743a29289353d9 GIT binary patch literal 77824 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 literal 0 HcmV?d00001 diff --git a/E/M.MAP b/E/M.MAP new file mode 100644 index 0000000..e9a04a0 --- /dev/null +++ b/E/M.MAP @@ -0,0 +1,8 @@ + + Start Stop Length Name Class + + 00000H 0001EH 0001FH PRIMERO CODE + +Program entry point at 0000:0000 +Warning: No stack + diff --git a/LETC.CPP b/LETC.CPP new file mode 100644 index 0000000..3449599 --- /dev/null +++ b/LETC.CPP @@ -0,0 +1,195 @@ +#include + +void Letrero(int AX_register ); +char mi_estruct[] = "Esto solo es una prueba, de mi primer programa en Assembly JD $ 000018000000000000"; + +long dir_fuentes; + + +void main( void ) +{ + + + Letrero( 1 ); + + while( !kbhit() ) + Letrero( 0 ); + +} + + +void Letrero(int AX_register ) +{ + + asm{ + + push DS + mov AX, SEG mi_estruct + mov DS, AX + mov SI, OFFSET mi_estruct + + mov AX, AX_register + + +//; Funci¢n para generar un letrero digital 100 % ASM +//; +//; Entradas: +//; SI ptr a las estructura de datos 256 bytes +//; +//; 237 cadena a mostrar en el letrero: el final es $ +//; 2 posici¢n X +//; 2 posici¢n Y +//; 1 (1nibble Escala X | 2nibble Escala Y ) +//; 1 n£mero de d¡gitos a mostrar en pantalla +//; 1 color de fondo +//; 1 color principal +//; ----------------------------------------------- +//; 1 posici¢n dentro de la cadena +//; 1 posici¢n en el byte +//; 8 FUTURA AMPLIACIàN +//; +//; AX si 1, inicializa nuestra informacion +//; + +//; letrero_digital PROC near //;-------------------------------------------- + + cmp AX, 1 //; si no hay que inicializar nada, + jne generar_digitos //; empezamos a generar los d¡gitos + + mov AX, 1130h //; obtenemos la direccion del juego + mov BH, 03h //; de caracteres 8x8 de la ROM ( 0 - 127 ) + int 10h //; Funci¢n de video 10h + + mov [dir_fuentes], ES //; guardamos el segmento en dir_fuentes + mov [dir_fuentes+2], BP //; guardamos el offset en dir_fuentes + + mov [SI + F6h], 0 //; posicion dentro de la cadena <-- 0 + mov [SI + F7h], 0 //; posicion dentro del byte <------ 0 + + generar_digitos: + + mov BH, [ SI + F3h ] //; n§ de digitos a mostar + + push [ SI + F6h ] //; guardo el contenido original de la pos. + + mov BP, [ SI + F6h ] //; posicion dentro de la cadena + add BP, SI //; posicion del digito a procesar + + mov AL, [BP] //; digito a procesar + + + + nuevo_digito: + + mov AH, 0 + mov CL, 3 //; multiplico por 8 AX para tener la + shl AX, CL //; posicion dentro de la ROM + + add AX, dir_fuentes+2 //; cargo AX con la direccion de la letra + + mov CH, 0 //; recorre las 8 filas ( 0 - 7 ) + + siguiente_fila: + +//; ************************** + mov DH, 0 + mov DL, CH + add AX, DX +//; add AX, CH //; direccion por fila de la letra a recorrer +//; ************************** + mov BL, dir_fuentes:[AX]//; colocamos en BL la fila del digito a tratar + + mov CL, 8 //; recorre los 8 puntos horizontales + + sigue_horizontal: + +//; ************************** muestro en (x,y) un punto o un espacio + push AX push BX push CX + + mov DH, [SI+238] //; coordenada x inicial + mov DL, [SI+240] //; coordenada y inicial + + add DL, CH //; coordenada y final + + mov AL, [SI+F3] //; n§ de digitos a mostar + sub AL, BH //; ndm - digitos que quedan = digitos mostrados + + mov CL, 3 //; + shl AL, CL //; multiplico por 8 los digitos mostrados + + add DH, AL //; coordenada y final + + mov AH, 02h + mov BH, 1h + int 10h + + pop CX pop BX pop AX +//; ************************** muestro en (x,y) un punto o un espacio +//; ************************** muestro en (x,y) un punto o un espacio + push AX push BX push CX + + shl BL, 1 //; dezplaza 1 bit a la izquierda + + jc punto_letrero_on + + mov AL, 32d + + jmp fin_punto + + punto_letrero_on: + + mov AL, 43d + + fin_punto: + + mov AH, 0Ah + mov BH, 1h + mov CX, 1h + int 10h + + pop CX pop BX pop AX +//; ************************** muestro en (x,y) un punto o un espacio + + dec CL //; + jnz sigue_horizontal //; continua hasta los 8 bit's + + inc CH //; + cmp CH, 8 //; + jne siguiente_fila //; procesa las 8 filas + + inc [ SI + F6h ] //; inc el puntero de posicion + + mov BP, [ SI + F6h ] //; posicion dentro de la cadena + add BP, SI //; posicion del digito a procesar + + mov AL, [BP] //; digito a procesar + + inc [SI + F6h] //; inc la posicion dentro de la frase + cmp AL, '$' //; si no fin de frase continuo normalmente + jne es_fin_frase //; + mov [SI + F6h], 0 //; si no, posicion de frase == 0 + + es_fin_frase: + + dec BH //; solo visualiza los digitos que manda el + jnz nuevo_digito //; usuario. + + pop [ SI + F6h ] //; restauro el contenido original de la pos. + + inc [ SI + F6h ] //; actualizo la rotacion para la proxima vez + cmp AL, '$' //; + je frase_rotada //; + mov [ SI + F6h ], 0 //; + + frase_rotada: + + RET //; regreso de la llamada + +//; letrero_digital endp + + + POP DS +} + + +} \ No newline at end of file diff --git a/LETRERO.ASM b/LETRERO.ASM new file mode 100644 index 0000000..de0c68d --- /dev/null +++ b/LETRERO.ASM @@ -0,0 +1,204 @@ +Codigo segment + + assume cs:Codigo, ds:Datos, ss:Pila + + + display_frase PROC near ;-------------------------------------------- + + mov AX, 1 + mov SI, OFFSET mi_estruct + CALL letrero_digital + + mov CX, FFFFh + + continua_un_rato: + + push CX + mov AX, 0 + CALL letrero_digital + pop CX + + loop continua_un_rato + + mov ax,4c00h ;no exit back to DOS + int 21h ;DOS interrupt + + display_frase endp ;-------------------------------------------- + + + +; Funci¢n para generar un letrero digital 100 % ASM +; +; Entradas: +; SI ptr a las estructura de datos 256 bytes +; +; 237 cadena a mostrar en el letrero: el final es $ +; 2 posici¢n X +; 2 posici¢n Y +; 1 (1nibble Escala X | 2nibble Escala Y ) +; 1 n£mero de d¡gitos a mostrar en pantalla +; 1 color de fondo +; 1 color principal +; ----------------------------------------------- +; 1 posici¢n dentro de la cadena +; 1 posici¢n en el byte +; 8 FUTURA AMPLIACIàN +; +; AX si 1, inicializa nuestra informacion +; + + letrero_digital PROC near ;-------------------------------------------- + + cmp AX, 1 ; si no hay que inicializar nada, + jne generar_digitos ; empezamos a generar los d¡gitos + + mov AX, 1130h ; obtenemos la direccion del juego + mov BH, 03h ; de caracteres 8x8 de la ROM ( 0 - 127 ) + int 10h ; Funci¢n de video 10h + + mov dir_fuentes, ES ; guardamos el segmento en dir_fuentes + mov dir_fuentes+2, BP ; guardamos el offset en dir_fuentes + + mov [SI + F6h], 0 ; posicion dentro de la cadena <-- 0 + mov [SI + F7h], 0 ; posicion dentro del byte <------ 0 + + generar_digitos: + + mov BH, [ SI + F3h ] ; n§ de digitos a mostar + + push [ SI + F6h ] ; guardo el contenido original de la pos. + + mov BP, [ SI + F6h ] ; posicion dentro de la cadena + add BP, SI ; posicion del digito a procesar + + mov AL, [BP] ; digito a procesar + + + + nuevo_digito: + + mov AH, 0 + mov CL, 3 ; multiplico por 8 AX para tener la + shl AX, CL ; posicion dentro de la ROM + + add AX, dir_fuentes+2 ; cargo AX con la direccion de la letra + + mov CH, 0 ; recorre las 8 filas ( 0 - 7 ) + + siguiente_fila: + +; ************************** + mov DH, 0 + mov DL, CH + add AX, DX +; add AX, CH ; direccion por fila de la letra a recorrer +; ************************** + mov BL, dir_fuentes:[AX]; colocamos en BL la fila del digito a tratar + + mov CL, 8 ; recorre los 8 puntos horizontales + + sigue_horizontal: + +; ************************** muestro en (x,y) un punto o un espacio + push AX push BX push CX + + mov DH, [SI+238] ; coordenada x inicial + mov DL, [SI+240] ; coordenada y inicial + + add DL, CH ; coordenada y final + + mov AL, [SI+F3] ; n§ de digitos a mostar + sub AL, BH ; ndm - digitos que quedan = digitos mostrados + + mov CL, 3 ; + shl AL, CL ; multiplico por 8 los digitos mostrados + + add DH, AL ; coordenada y final + + mov AH, 02h + mov BH, 1h + int 10h + + pop CX pop BX pop AX +; ************************** muestro en (x,y) un punto o un espacio +; ************************** muestro en (x,y) un punto o un espacio + push AX push BX push CX + + shl BL, 1 ; dezplaza 1 bit a la izquierda + + jc punto_letrero_on + + mov AL, 32d + + jmp fin_punto + + punto_letrero_on: + + mov AL, 43d + + fin_punto: + + mov AH, 0Ah + mov BH, 1h + mov CX, 1h + int 10h + + pop CX pop BX pop AX +; ************************** muestro en (x,y) un punto o un espacio + + dec CL ; + jnz sigue_horizontal ; continua hasta los 8 bit's + + inc CH ; + cmp CH, 8 ; + jne siguiente_fila ; procesa las 8 filas + + inc [ SI + F6h ] ; inc el puntero de posicion + + mov BP, [ SI + F6h ] ; posicion dentro de la cadena + add BP, SI ; posicion del digito a procesar + + mov AL, [BP] ; digito a procesar + + inc [SI + F6h] ; inc la posicion dentro de la frase + cmp AL, '$' ; si no fin de frase continuo normalmente + jne es_fin_frase ; + mov [SI + F6h], 0 ; si no, posicion de frase == 0 + + es_fin_frase: + + dec BH ; solo visualiza los digitos que manda el + jnz nuevo_digito ; usuario. + + pop [ SI + F6h ] ; restauro el contenido original de la pos. + + inc [ SI + F6h ] ; actualizo la rotacion para la proxima vez + cmp AL, '$' ; + je frase_rotada ; + mov [ SI + F6h ], 0 ; + + frase_rotada: + + RET ; regreso de la llamada + + letrero_digital endp + +Codigo ends + +Datos segment para public 'data' + +dir_fuentes qb FFFF0000h + + mi_estruct db 'Esto solo es una prueba, de mi primer programa en Assembly JD $ 000018000000000000' + +Datos ends + + +Pila segment stack 'stack' + + db 1000 dup (0) + +Pila ends + + end + diff --git a/LETRERO.JD b/LETRERO.JD new file mode 100644 index 0000000..c80e7d7 --- /dev/null +++ b/LETRERO.JD @@ -0,0 +1,200 @@ + NAME JD + PAGE 60, 130 + TITLE 'MI PRIMER PROGRAMA EN ASM -->JD' + + +UNICO SEGMENT PARA PUBLIC 'CODE' + + ORG 0100H + + ASSUME CS:UNICO, DS:UNICO, ES:UNICO, SS:UNICO + + + +mi_estruct db "Esto solo es una prueba, de mi primer programa en Assembly JD $ 000018000000000000" + + +diplay_frase PROC near + + mov AX, 1 + mov SI, OFFSET mi_estruct + CALL letrero_digital + + mov CX, FFFFh + +continua_un_rato: + + push CX + + mov AX, 0 + CALL letrero_digital + + pop CX + + loop continua_un_rato + + mov AX, 04c00h + int 21h + +display_frase endp + + +; Funci¢n para generar un letrero digital 100 % ASM +; +; Entradas: +; SI ptr a las estructura de datos 256 bytes +; +; 237 cadena a mostrar en el letrero: el final es $ +; 2 posici¢n X +; 2 posici¢n Y +; 1 (1nibble Escala X | 2nibble Escala Y ) +; 1 n£mero de d¡gitos a mostrar en pantalla +; 1 color de fondo +; 1 color principal +; ----------------------------------------------- +; 1 posici¢n dentro de la cadena +; 1 posici¢n en el byte +; 8 FUTURA AMPLIACIàN +; +; AX si 1, inicializa nuestra informacion +; + +dir_fuentes db 4 DUP (0) + + +letrero_digital PROC near + + + cmp AX, 1 ; si no hay que inicializar nada, + jne generar_digitos ; empezamos a generar los d¡gitos + + mov AX, 1130h ; obtenemos la direccion del juego + mov BH, 03h ; de caracteres 8x8 de la ROM ( 0 - 127 ) + int 10h ; Funci¢n de video 10h + + mov dir_fuentes, ES ; guardamos el segmento en dir_fuentes + mov dir_fuentes+2, BP ; guardamos el offset en dir_fuentes + + mov [SI + F6h], 0 ; posicion dentro de la cadena <-- 0 + mov [SI + F7h], 0 ; posicion dentro del byte <------ 0 + + generar_digitos: + + + mov BH, [ SI + F3h ] ; n§ de digitos a mostar + + push [ SI + F6h ] ; guardo el contenido original de la pos. + + mov AX, [ SI + F6h ] ; posicion dentro de la cadena + add AX, SI ; posicion del digito a procesar + mov AL, [AX] ; digito a procesar + + nuevo_digito: + + mov AH, 0 + mov CL, 3 ; multiplico por 8 AX para tener la + shl AX, CL ; posicion dentro de la ROM + + add AX, dir_fuentes+2 ; cargo AX con la direccion de la letra + + mov CH, 0 ; recorre las 8 filas ( 0 - 7 ) + + siguiente_fila: + + add AX, CH ; direccion por fila de la letra a recorrer + mov BL, dir_fuentes:[AX]; colocamos en BL la fila del digito a tratar + + mov CL, 8 ; recorre los 8 puntos horizontales + + sigue_horizontal: + +; ************************** muestro en (x,y) un punto o un espacio + push AX push BX push CX + + mov DH, [SI+238] ; coordenada x inicial + mov DL, [SI+240] ; coordenada y inicial + + add DL, CH ; coordenada y final + + mov AL, [SI+F3] ; n§ de digitos a mostar + sub AL, BH ; ndm - digitos que quedan = digitos mostrados + + mov CL, 3 ; + shl AL, CL ; multiplico por 8 los digitos mostrados + + add DH, AL ; coordenada y final + + mov AH, 02h + mov BH, 1h + int 10h + + pop CX pop BX pop AX +; ************************** muestro en (x,y) un punto o un espacio +; ************************** muestro en (x,y) un punto o un espacio + push AX push BX push CX + + shl BL, 1 ; dezplaza 1 bit a la izquierda + + jc punto_letrero_on + + mov AL, 32d + + jmp fin_punto + +punto_letrero_on: + + mov AL, 43d + +fin_punto: + + mov AH, 0Ah + mov BH, 1h + mov CX, 1h + int 10h + + pop CX pop BX pop AX +; ************************** muestro en (x,y) un punto o un espacio + + dec CL ; + jnz sigue_horizontal ; continua hasta los 8 bit's + + inc CH ; + cmp CH, 8 ; + jne siguiente_fila ; procesa las 8 filas + + inc [ SI + F6h ] ; inc el puntero de posicion + + mov AX, [ SI + F6h ] ; posicion dentro de la cadena + add AX, SI ; posicion del digito a procesar + mov AL, [AX] ; digito a procesar + + + inc [SI + F6h] ; inc la posicion dentro de la frase + cmp AL, '$' ; si no fin de frase continuo normalmente + jne es_fin_frase ; + mov [SI + F6h], 0 ; si no, posicion de frase == 0 + + es_fin_frase: + + dec BH ; solo visualiza los digitos que manda el + jnz nuevo_digito ; usuario. + + pop [ SI + F6h ] ; restauro el contenido original de la pos. + + inc [ SI + F6h ] ; actualizo la rotacion para la proxima vez + cmp AL, '$' ; + je frase_rotada ; + mov [ SI + F6h ], 0 ; + + frase_rotada: + + RET ; regreso de la llamada + +letrero_digital endp + + + + +UNICO ends + + end diff --git a/M.ASM b/M.ASM new file mode 100644 index 0000000..ce2dd3e --- /dev/null +++ b/M.ASM @@ -0,0 +1,21 @@ +primero segment para public 'CODE' + + + assume cs:primero, ds:primero, ss:primero + + inicial proc near + + mov DX, offset ds:cadenatexto + mov AH, 09h + int 21h + + mov ax, 04c00h + int 21h + + inicial endp + + + cadenatexto db "Esto es una prueba$" + +primero ends + end diff --git a/M.EXE b/M.EXE new file mode 100644 index 0000000000000000000000000000000000000000..2bfb7dc130a7bc1151285bd28d362dc3bd849b44 GIT binary patch literal 543 zcmeZ`l4oFIU|>)H;{X4F1Qgf-X-0~wIS^_9 literal 0 HcmV?d00001 diff --git a/NONAME00.EXE b/NONAME00.EXE new file mode 100644 index 0000000000000000000000000000000000000000..a5da1b4592fd1bb09eeda012e661429bdbde381b GIT binary patch literal 6417 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 literal 0 HcmV?d00001 diff --git a/NONAME00.TFA b/NONAME00.TFA new file mode 100644 index 0000000000000000000000000000000000000000..dbfcd908335eb95fb7fa25a6d28d38b0f070a3a9 GIT binary patch literal 143 zcmWG3ElSE)2q?-=%gjkFQb;UHO)ORbv89U2)so8@85tZH7&sgl85kHHlo?#CVgiEv z-Gdx`V}gU6<6ZoNV;qBhWBmO69DQ944D?(hT$vo07(^I2fg}S1JCICaU~^yr>SkbI cb`Stj42-M{3@{xmK+_ot7#NsnsHkvdb0&CZa{Og1KhhEZyv&+N9!IKMcDZw%X>}`_oWM zX+sLDJ=n*MeXEP#+KnI)(|ovQy{_GtgV_&55Q=ny*F_jwwQiN3?^_i-c;4sbchB#+ z=lT6^{RjB0qa)r3i7(HzbToS7;-J2f0Z3`*LXd3@b20 zwSq@=m%hTvPs^N!kYC~k5JJ%-6s?mL#HpQ5y>SU2mLzKSnGeaMt^DRdhXZouf`5LXK0`Uz(|=0(tIZ}A0}707!F z)mBZxYt>AKyjZ&DDt>a%3d|c5dUXo@zc(njaq}a)6|Og=(Y^zuFd!UIg92#J=>6~) z@?)VYZHFH+W&NH`iku&_NQ*0X4P#<4rXX#!aZ~sAU?D~|jNHF5g1fj;yzU<%LGu_I z2CMo?20I7i_BAx^lPK@DkD=@lsRl5A8?J+LpP@jS&aU={*>Jh~#eSt9C6! zSG7&kz74X^&V#&2X>U0HP!2~YdpFG8^*ldCmfe^kDv`lSk6Z@BE0OzDwKcNHONPvC z_kf)In7Bvm-4LqObAnHe%^^g|xN?2epFt%|+lZ(5xC;Qh8Vs?Rh{HHB%{ZCG1 zOE+h>x-M35=JeWf