escuela politÉcnica nacional facultad de ingenierÍa...

485
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA ESPECIALÍZACION EN ELECTRÓNICA Y TELECOMUNICACIONES DEPURADOR DE PROGRAMAS PARA EL MICROPROCESADOR S0486 (PARTE 3} JORGE BOLÍVAR OSORIO HINOJOSA ALEX JOHNINE TROYA ALDAZ TESIS PREVIA A LA OBTENCIÓN DEL TITULO DE INGENIERO EN LA ESPECIALÍZACION DEINGENIERÍA ELECTRÓNICA Y TELECOMUNICACIONES DE LA ESCUELA POLITÉCNICA NACIONAL MAYO 1997

Upload: others

Post on 30-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA

ESPECIALÍZACION EN ELECTRÓNICA Y

TELECOMUNICACIONES

DEPURADOR DE PROGRAMAS PARA EL

MICROPROCESADOR S0486

(PARTE 3}

JORGE BOLÍVAR OSORIO HINOJOSA

ALEX JOHNINE TROYA ALDAZ

TESIS PREVIA A LA OBTENCIÓN DEL TITULO DE

INGENIERO EN LA ESPECIALÍZACION DE INGENIERÍA

ELECTRÓNICA Y TELECOMUNICACIONES DE LA

ESCUELA POLITÉCNICA NACIONAL

MAYO 1997

Page 2: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKNDIC1Í G-

APÉNDICE Q

ARCHIVOS FUENTE LflSMl DE LOS EJEMPLOSDE DEPURACIÓN

Page 3: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

G-l.

APÉNDICE G

FÜNCION.ASM

^ejemplo de programa interactivo dirigido por menú para obtener las junciones;seno} coseno y tangente de un ángulo, (para coprocesadores 80387 en adelante)

3dosseg.model small.386.387.stock 64h

ÁREA PARA DATOS

.data

menul db ' ESCOJA OPCIÓN INGRESANDO UNO DE ESTOSCARACTERES: ',10,13

db 'db 1

db 'db1

db1

db1

db 'db 'db1

db 'db 'S1

',10,13',10,13

S- OBTENER SENO DEL ÁNGULO (0-90°)',10,13',10,13

C- OBTENER COSENO DEL ÁNGULO (0-90°)',10,13',30,13

T- OBTENER TANGENTE DEL ÁNGULO (0-90°)', 10,13',10,13

E- FIN DEL PROGRAMA ', 10, 13',10,33

Menu2 db ' INGRESE VALOR ÁNGULO (.000° - 90.0°); $'

menú3 db 'menú4 db 'infinito db'Valué db ?noventa db Oselección db ?hex del Onuml db O

db Odb Odb O

tecla db O

RESULTADO = S1

PRESIONE UNA TECLA PARA CONTINUAR S1

RESULTADO = INFINITOS1

;recibe opción de .menú¿almacena ángulo en hexadecimal (grados);recibe el ángulo en decimal (grados)

¡indica si se presionó ESC o ENTER

Page 4: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

G - 2

APÉNDICE G

posiciónans

dbdq

OO

milmiUon dd 1000000000millónconstlconst2constSdiezdeci.

dqdddddddbdt

printnumpiishaandormovmovintpopaendm

10000000018000018000180010o

macro

al.Qfha1,30hdi, alah,22.1.h

¿indica posición de la coma en ángulo¿almacena resultado en hexadecimal¡constantes

;almecena elresullado en decimal

¿imprime numero ASGH en pantalla¿guarda registros

;lo convierte a ASCH

¿iniciaíiza parámetros de intermpcion¿llama la interrupción

arith macropnshpushfinitfildcinpjnefidivjmp

norail:cmpjneJGdiv

n ocien:fídiv

hall arad:fldpiun ni

cmpjecmpjecmp

Je

cmp

axex

hexposicion,0nomilconstlhallara d

posición, 1n ocien.const2h aliara d

constS

selección,'s'senoseleccionas'senoselección,'Ccosenoseleccion/c1

¿macro aritmética

¿inicializa coprocesador¿carga valor entero hex en ST(0)¿punto decimal al inicio?

¿divide ST(0) para constl (1.80000) pa-p"a convertir a radianes y recorrer la¿coma decimal

¿divide ST(0) para constS (1800)

¿cargar valor PI en. ST(0)¿multiplicar ST(0) con ST(.l)¿se obtiene ángulo en radianes¿se desea obtener seno de ángulo?

¿se desea obtener coseno de ángulo?

Page 5: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

G-3

ARENDICE G

cmpjecmpje

cosenoselección,'T1

tangenteselección, lt'tangente

¿se desea obtener tangente de ángulo?

seno:fsin

fildfinul

fistpjmp

coseno:feosfildfinulfístp

tangente:cmpjnemov

millónsl,st(l)

ansfin

millónst,st(l)ansfin

hex,900otrono venta, Ofín

mov bh;3£hclearscreen

cursor OcOOh

mov ah,9hmov dx, offset infinitoin1 21hjmp fin2

otro: fsincosfdiv st(l),st

físípfildJ&nulfistp

cali

ansmillón.st,st(l)ans

convdec

¿obtener seno del ángulo (radianes);contenido en ST(0)¿cargar constante millón en ST(0)¿multiplicar ST(0) con ST(1) para¿convertir valor decimal a entero¿sacar valor entero a la vañable ANS

¿obtener coseno del ángulo (radianes)

mov bh,3£h

¿obtener tangente del ángulo¿valor del ángulo = 90o?

¿indica que es tangente de 90°

¿atributo color¿macro para limpiar la pantalla

¿macro para ubicar cursor en¿fila 12, columna O

¿présenla resultado = infinito para¿tangente de 90°¿llama interrupción

¿obtener seno y coseno cíe ST(0)¡divide ST(0) para ST(1) (Seno/Coseno)¿resultado se almacena en ST(1)¿sacar valor entero a ANS¿cargar valor entero millón a ST(0)¿multiplicar ST(0) por ST(1)¿sacar valor entero (resultado) a ANS

pollina conversión a decimal del¿resultado de la tangente¿atributo color

Page 6: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

C-4

APÉNDICE G

clearscreencursor OcOOhpiintchar menuS

movmovmovaddmovmovinldecmovmovcalidecmov

si,offse1 decibx,5al,[si+bx]al,30hd1,alah,221hbxal}[si+bx]valué, alprintitbxnoventaQeh

;macro para limpiar pantalla

;presentar menuS en pantalla

;presenta valor entero de tangente

fin: califin2: pop

popendm

readnumerolocalpushpushpushpushmovmovmovmovmovmov

llenar:movincloopmovmov

oirá: cmpjneinov

leertec:mov

convdecexax

macro thisnum, valorotraafin,eqiu)lax

exbxdxtecla, Oposición, Ofíhbx30ex, valorsijOfísel thisnumal,0

[si+bx],albxllenar

¿indica operación fue tangente

jrutina conversión a decimal del¿resultado de seno o coseno

;lee de teclado datos de acuerdo a valor¿define variables locales¿guarda registros afectados

¿indica no es ENTER ni ESC

¿número de dígitos¿ubicar datos en thisnum

¿borra contenido de thisnum

bx,0posiciorijblleertecposiciorijOflh

ah,01h ¿inicializa parámetros

Page 7: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

£*xq diuoTIJTTI QtlTi"*" Jw-:

Ví?f)rT *"T¡ i IALSt-tJU*,* V»ü**>

"ÍI1TTTIATI-*•i"—H'V

TT'\'7"CTt.tI^C l"

;¡10 dtuCXO OUÍ

n JOSJT1O 13AÍ

TI vanL-H-**"

AOUI

AOUI

ou

• VI VA I• L-H^"'

CÍLUf

AOÜÍ

»| f_j.

duifAOUI3iiT«•*.

u nr\f »>

3U

diuo

•{rlllíSlU .MI!

OSJP.O

Tiar) 7T3 [OTIfA OmiTI»OatV W*^ ^«^Ib^A. * L^.*«r L

A pin -TtínJ fc-O i -» .j^pB.t.'^

nnt: -TTiínK*•"•* • -'""

TTT-T-nic

D 3DIOM33V

Page 8: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE G

G-6

ja emovjmp

no coma:cmp

cmpjbcmp

jmpmal:

movmovinlcalical]calijmp

carairas:movmovintretn

cnrdel:movmovintretn

fin: poppop

POPpopendm

malposición ,blequal

al,2chdecimalal,30hmalal,39hmalequall

ah,2dl,721hcarairascardelcarairasotra

dl,08hah,22.1.h

dl,20hah,221h

dxbxexax

readkey macro tniskeypush axmov si, offset tniskeymov ah,01hint 21hmovpopendm.

thiskey,alax

;esuna "," decimal?

;BEEP (carácter no aceptado)

;rnover cursor una posición atrás

;mover cursor una posición adelante

;lee un dato del tecladoAguarda registro afectado

;inic.ializa parámetros;lee interrupción tecla;guarda tecla devuelta en vanabíe

clearscreen macro ;bon"a pantalla color

Page 9: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

c-r

APÉNDICE G

pusbainovmovmovinl.popaendiu

cx,0dx52479,hax,06QÜbJOh

cursor macro Jocatepusbamov ab,15íntmovmovíntpopaendm

printcbarpusbaleamovintpopaendm

JOhdx,locateah}2J.0b

macro text

dx,textah392.1h

¡inicializa esquina superior de ventana¡inicializa esquina inferior de ventana¡parámetros de interrupción¡llama interrupción

¡desplaza cui-sor (localizar)¡guarda registros;obtiene pantalla actual

¡llamada interrupción, inicializa valores BX¡desplaza posición de pantalla a AX¡inicializa parámetro de cursor¡llama a la inlemipción

¡imprime caracteres del segmento de datos cadena¡a ser pasada¡en (texto) se imprime hasla ($),¡se localiza, imprime desde posición¡actual de cursor

ÁREA PARA CÓDIGO

.codemov ax,@datamov ds,ax

¡dirección segmento datos a AX¡valor AX al registro de segmento

mmenu; -mov bh,70hclearscreencursor OcOOhprinlchar menxi.1

¡borra pantalla¡llairia macro cursor¡imprime menú principal

¡lee teclado para operación aritmética correctakey; readkey selección

cmp selección,'B!

¡lee opción de menú¡salir del programa?

Page 10: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

G--S

APÉNDICE G

Jecmp

Je

cmpjecmpjecmp

Je

cmp

Je

cmpjecmp

jeimp

finalselección, 'e'finalseleccionas1

getnuselección, 's'getnuselección, 'Cgetnuselección, hcl

getnuselección, 'T1

getnuselección, 't!getnummenu

;si no, continuar

¡verificar si opción váliva

gelntfcmov bh,70hclearscreencursor OcQGliprintchar menu2

;leer primer numeroreadnumero numl,4xorcmpJe

movcmpjneinc

moveprim:movinccmpjneinc

movesec:movinccmpjneinc

moveter;movaad

eax,eaxtecla,0£QimmenubXjOposición, 0moveprimbx

ah,[si+bx]bx

posición,!movesecbx

al;[si+bx]bxposición, 2moveterbx

c],[si+bx]

;borra el menú¿desplazar cursor¿preguntar por ángulo

;lee entrada de teclado¿convertir ángulo a hexadecimal;eliminando el punto decimal

Page 11: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

C - 9

AEENDICE G

movmuíxoraddcmpjbemovmovint

bien:

bx,10bxch,chax,cxax,90Qbienah,2di, 721h

getnu

hex,eaxnoventa, O

noven ta,0:l:frifín4novenía,0eh

¡compara si ángulo > 90*

movmovarithcmpjecmp

mov bb,3fhclearscreencursor OcOOhpiintchar menuSmovmovmovaddmovmovintdec

movmovmovInt

¡proceder con arithmetic

;hace operación seno, coseno o tangente

sig:movmovcal]clecloop

fin4: cursorprintcharmovintjmp

convdec;

decíbx34

al,[si+bx]al,30hdl,alah,22.1 bbx

cx,4ah32dl,2ch21h

al,[si+bx]valué, alprintitbxsigITOAhmenu4an,016bmmenu

;bon-a el menú;desplazar cursor¡preguntar por ángulo

¡presenta parle entera de seno o coseno

¡presenta parte decimal para todos;los casos

¡esperar por tecla

¡bifurca a menú principal y repite¡rutina conversión a decimal

Page 12: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ATKKDrCE C

G- 1.0

movJT1OV

movdivmovpushxormov

POP

div.movshlmov

movmovmovdivadd

movmovmovdivshladd

movmovmovdivshladd

movmovmovdivshladd

movmov.movdivshl

síjOffsetanseax,[si] ;ansedx,[si+4]milmillon ;ebxdi, offset deci ;manlisfeaxeax, eax[di], eaxeaxdiezbyíe ptr [di+5],alah,4byteplr [di+4],ah

eax,edxedx90ebx, 100000000ebx[di44],al

eax,edxecLx,0ebx,10000000ebxeax,28[di], eax

eax,edxedx,0ebx31000000ebxeax,24[di], eax

eax5edxedx,0ebx,100000ebxeax,20[di], eax

eax,edxedx,0ebx, 10000ebxeax, 16

;bon:o el contenido de mantisa

;reciduo a eax

;reciduo a eax

Page 13: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

G - l i

APEITOICE G

add [di],eax

movmovmovdivshladd

niovmovmovdivshJadd

movmovmovdivshladdaddretn

eaXjGctxedx,0eb^lOOOebxeax,12[di],eax

eax,edxedx,0ebx, 100ebxeax,8[di],eax

eax,edxedx30ebx,10ebxeax,4[di],eax[di^edx

printitproc neíirpush axpush expush dxmovand al,0í0hmov el, 4ror al, elprmtnum.movandprintnumpop dxPOPPOP

retnprint.it endp

final: mov bh,07clearscreen..exitend

;procedimiento para imprimir números

;carga datos;man1iene solo 4 bi(s superiores

¿desplazamiento circular de cuatro bits inferiores¿desplazamiento circular;macro printnum¿cargar datos¿mantiene solo 4 bits inferiores

;fín procedimiento

¿volver al DOS

Page 14: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

C-12

APÉNDICE G

PRÜRAT.ASM

¡programa ejemplo de uso del ratón en lenguaje enzamblador¿presenta información del modo de video y de la posición del puntero

dosseg ¿dice al enlazador que ordénelos segmento de acuerdo a¿la convención estándar del DOS

.model small ¿define un modelo de memoria tipo Small: un segmento;para datos y otro para código

.486 ¿especifica que se acepten las .instrucciones para el;microprocesador 80486

¿ÁREA PARA DATOS

.data ¿inicio del segmento de datos;**** Variables para el uso del ratónvari STRUCT

VAR11 dwVAR12 dw

vari ENDSvari vari <030>

OO

¿define una variable tipo estructura; define una variable tipo palabra (16 bits)

¿crea una variable tipo vari (estructura) , para uso¿con macros Mreseteo;y Mmovera

RESULT STRUCTVAR31 dw OVAR32 dw OVAR33 dw OVAR34 dw O

RESULT ENDSVAR3 RBSULT <0,0,0,0> ¿para uso con .macro MpresionadoVAR3a RESULT <0J0J0,0> ¿para uso con macro MLiberado

RESULT1 STRUCTVAR2J dw OVAR22 dw OVAK23 dw O

RESULT1 ENDSVAR2 RESÜLTl <0,0,0> ¿para uso con macro Mposicion

var dw O'ratonpresente db O

¿indica si el punetro del ratón est visible¿indica si el controlador del ratón est instalado

Page 15: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE G

G - Í3

¡mensajeinicial db ' PROGRAMA PARA PROBAR EL KATON EN MODOTEXTO1

db ,13,10,,! O ¡Enter (13) : pone el cursor al inicio¡Alimentación de línea (10)

db 'Presione una léela para continuar1

db 13,10db 'S1 ¡fin de string de caracteres

cont db 'H- Haga click en el cuadro o presione una tecla 'db 'para terminar1

db 13,10 ¡Enter pone el cursor al inicio y alimentación de¡línea

db ' modo video-video db O ¡almacenan el modo de vídeo en hexadecimal

db Odb 'b'db ' pagina activa-

activa db O ¡almacenan b página activa en decimaldb ' número de columnas—

columnas db Odb Odb O

cr db Odhfínsfr db '$'

contl db "x=""db 30h

punterodb 30hdb 30hdb 'y='db 30hdb 30hdb 30hdb Odh}'$'

lalinacenan el número de columnas en. decimal

;fin cíe mensaje

¡mensaje;alrnacenan ]a posición horizontal en pixels del

¡almacenan la posición vertical en píxels del puniero

;íin de mensaje

;AREA PARA CÓDIGO

.code ;ínicio del segmento de código

Page 16: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE G

C-14

ínclude mouse.asm ;se incluye el archivo de macros del ratón

extrn pasborramear

prurat:mov ax,@datamov ds,axmov es,axcali pasborra

¡incluir e] procedimiento externo Pasborra para¡borrar la pan talla.;se debe enlazar: Link Prurat] +Pasborra¡previamente debe ensamblarse el archivo¡Pasborra.asm yPruraÜ.asm separadamente

¡se pone el segmento de datos en ds y es

¡borrar la pantalla

¡Poner mensaje inicialmov ah,02 ¡mover el cursor a la posiciónmov dx,0h ;00300 (en caracteres)int: lOh

mov ex, 80rnov al,1'mov bl,17h

¡número de caracteres a poner en pantalla¡se escribe al carácler espacio blanco¡fondo azul(l), carácter rojo(4)

movmov

int

bh,0ah,9

lOh

m ov dx, offset inicial,mov ah,9inC 21,h

movint

ah,0J.6h

mov bh,0mov al,' 'mov bl,24hmov ex, .1680mov ah,9

¡página de vídeo activa es O¡función BIOS escribir caracteres y atributo desde¡posición del cursor sin alterarla¡Poner carácler y atributo en pantalla¡contenidos en al y bl respectivamente;bh indica la página de vídeo en la que se¡pondrán los caracteres

¡mover a dx Ja dirección de inicial

¡escribir el mensaje inicial

¡esperar hasta que se presione una tecla

¡fondo verde¡llenar franjas con fondo verde

Page 17: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE

G- 15

int lOh

mov ah,03hint lOhpush ex

¡obtener información del cursor y poner en la pila

mreseteo varljVar,ratonpresente ;macro: inicializar el ratón

mov varl.varl 1,105m ov vari .var 12,10 5mmovera varl,ratonpresente

;mover puntero de ratón a la posi-¡ción 105,.105 enpixels;macro: mover puntero

mov ah,0:fliint lOhpush nxpush bxpush ax

¡obtener infonnación de vídeo;al = número de car cteres por columna

;ah = niodo de vídeo¡bh = página activa¡guardar en la pila

and alsOfh

cmpjbeadd

menoraa:addmovpopmovshrandcmpjbeadd

menorab:addrnov

al,0ahmenoraaal,7h

al,30h

axcl,4al,cla!50fhal,0ahmenorabal,7h

al,30hvi de o, al

add bh,30hmov actrva,bh

mov al,ahxor ahah

¡transfoiTnar el primer dígito de número¡de columnas a¡fonnato a ASCH¡sallar si es dígito¡sumar 7 si es 3e1ra (A a F)

¡sumar 30h para pasar a fonnato ASCH¡almacenar el valor¡transformar el segundo dígilo

¡convertir el número de página a formato¡A SCü

¡transformar el número de columnas¡a base decimal y luego a formato ASCH

Page 18: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE G

G-16

cmp al,64hjb menoraJOObmov bUOOdiv bladd a1,30hmov co1umnas3al

mov al,ahmenoralOOb:

cmp al3Qahjb menoraJObmov bljlOdiv bladd al,30nmov columnas+1 ,al

mov al,ah.menora]Qb:

add al,30Hmov Columnas+2,a1

pop bxpop ax

mov ab,02mov dx,0a0abint lOh

¡primero hallamos las centenas;el número es .mayor a J OOd?;si, dividir para lOOd

;sumar 30b para pasar a ASCIT; alma cenarlo en columnas

;movemos el residuo a al;hallamos las decenas;es mayor a 10d?

;si, dividir para lOh

;sumar 30h^almacenar en columnas +].

¡movemos el residuo a al;que representan las unidades;sumar 30h para pasar a ASCH¡almacenar en columnas + 2

¡mover el cursor a la posición;lOd,.lOd (en catéteres)

mov ah,9mov dx, offset continC 21h

¡función 9 del DOS: mostrar¡un stringtenTiinado en '$'

mov cli?20.bmov ah,01int lOh

¡ocultar el cursor

lazoraí:

mov al, 7mov b1,78h

cali cuadro

¡carácter en el cuadro (punto)¡atributo del cuadro¡(fondo blanco y carácter gris obscuro)¡dibujar cuadro

Page 19: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE G

C-1.7

mov ah,02mov íint lOh;

reposición var25ratonpi;ese:nte ¡raacro: obtenerla posición del puntero;del ratón en la variable var2 Tino

xormovcmpjbmovdivaddmovmovxor

menoralOQ:pushmovmovpopcmpjbmovdivaddmovmov

menoralO:addmovxormovcmpjbmovdivaddmovmovxor

menoralOOa

dx,dxax,var2.var22ax,64nmenoralOOnx,100bxaJ,30hcontl.4-3ja1ax/ixdx,dx

axal,30ncontl-f45alaxaXjOah.menoralObl,10bla1,30b

contl+4;alal,ah

a!,30Hcontl4-5,aldx,dxax,var2.vai;23ax,64hmenoralOOabx,100bxal,30hconta-f-lOjalax,dxdx,dx;

;del ratón en la variable var2 tipo; estructura

¡transformarla posición horizontal de;hexadecimal a decimal y luego a formato;ASCH

¡transformarla posición vertical dehexade-;cimíil a decimal y luego a formato ASCH

Page 20: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

G- 18

APÉNDICE G

push axmov al,30hmov conlJ+1.1.,alpop axcmp aXjOah.jb menoraJOamov bl,10div bJadd al,30hmov contJ+].l,almov al,ah

menoralOa:add a1,30Hmov contl,+123ítl

m ov dx, offset con IImov ab,9inl: 2Ih

mov a],''mov di, offset, cont 1 +3mov ex. 3rep stosbmov di, offset conM +] Oinov cXj3rep stosb

mov ah,Iinl: 16hjnz .finpru

;mostrar mensaje y valores de posición.

;poner los valores de posición del cursor;en blanco

;repetir stosb el .-número de veces que indica;cx

;ver si se ha presionado una tecla

;si: salir

JVtpresionado 0,var3,ratonpreseníe ;macro; obtener en var3 el estado;del botón izquierdo (0), y Ja¡posición del puntero desde la¡última vez que se presionó el bo-; Ion. izquierdo

cmp var3,var31,,.ljne lazorat

mov al,20b ;178mov bl,40h ;00caU cuadro

;se presionó el bolón;no; entonces saltar a .lazorat

Page 21: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE G

verificar:lyfliberado OjVar3a,ratonpresente

cmp var3 a,var 31. O

jne verificar

cmp var3 a. var33,70

jb lazoratcinp var3a.var33580ja lazoratcmp var3 a, var3 4,70jb lazoratcmp var3a.var345 SOja íazorat

FinPj"u:pop exmov afyOlint lOh

mmuestra 0)var5raionp]'esente

cali pasborra

mov a.int 2Jh

cuadro;mov aíis02mov dx,0909hint lOh

mov ex. 2mov bh,0

otrafila:push exmov ah}9

;macro: obtener en var3a el estado;deJ botón izquierdo (0)s y Ja¡posición del, puntero desde la¿última vez que se liberó e] bo-;tóti izquierdo;botón izquierdo liberado?

;= 1 no liberado, saltamos a verificar;hasta que se libere

;si: veiificamos si ]a posición;del puntero 3! liberar el botón¡estaba encima del cuadro (ubicado;en 70 a 80 horizontal en pixels¡y 70 a 80 vertical en pixels;si no está en los límites¡saltamos a íazorat

¡restauramos el cursor;con Jos valores antes de entrar;al programa

;macro:hacer .invisible el puntero¡del ratón

¡terminamos el proceso (programa)¡y retomar al DOS

¡dibuja un cuadro de 2x2 caracteres

Page 22: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE G

C-20

inl.CX, 2

JOh

mov ah,02mov dx,0a09hint 10h

;númer.o de caracteres a poner en pantalla;poner carácter y atributo en pantalla;contenidos en al y bl respectivamente;bh indícala página de vídeo en la que se;pondránlos caracteres

Amover el cursor a la posición;10d,9d (en caracteres)

pop exloop otra filareln

end Prurat

en el

;lazo hasta que cx=0;retorno

;se indica que el programa se ejecutapnicialmeníe desde Prurat;fin de todo el programa

Page 23: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

C - 21

APÉNDICE G

PASBORRA.ASM

¿módulo tipo publico que es invocado desde PRURAT.ASM y sirve para borrar la¿pantalla (para monitores a color). Se utiliza el método de escritura directa enmemoria de video

pantalla equ Ob800h

.model small.codepnblic pasborra

pasborra proc near

push espush axpush expush dxpush dimov ax,pantalla

mov es,axmov di, Omov cx,2000

cid

mov al,' '

mov ah,07h

rep stoswpop dipop dxpop expop axpop es

reípasborra enclpend

¿define a pantalla como el valor OB800H

;define al módulo-como público¿define el procedimiento pasborra

¿guardar en la pila los registros importantes

¿mover a AX la dirección inicial de la memoria de¿vídeo¿pasar la dirección de vídeo a ES

¿número de localidades de memoria a escribir¿una palabra por cada carácter (un byíe de atributo y¿un byte de código ASCO)¿incremento del puntero para trabajo con cadenas de¿caracteres¿grabar en cada localidad el códgo ASCtT del espacio¿en blanco¿grbar en cada localidad de atributo el atributo 07h¿(fondo negro y letras blancas)¿escribirlas localidades de memoria¿restablecer los registros desde la pila

¿retomo¿fin del procedimiento pasborra;fin del archivo

Page 24: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - DSICTALASM H-1.

MODULO JNICIAL.ASM

dosseg.model small.486

;ÁREA PARA PILA

.stack 200h

;AREA PARA DATOS

.data

extrnextmexlrnextrnpublicpublicpublicpublic

ambiente: word,ejecut amen ii:bytepixelx:byte3pixely:byíe3ratonpresente:bytetabinf:near,íabbuf:nearVentNueva:byte,VenrActual:byte;vent:bytevisibledirret, mraux2;mraux3, vi d eoseg, valp trmopaiix^nopauxl3tiprut,otroaiix,colvenareamac3bmac,bgm;ic,bver

bopc dbbmac dbbver dbbgmac dbnivel dbnivell dbnivel2 dbresptrivel. dbbuffer dbbufferl dbbufTer2 dbrespbuf dbnclave dbnclavel dbncIaveZ dbx dby dbxprev dbacabar? dbmiodir dw

oooooooo8 dup(O)8 clup(O)8 dup(O)8 dup(O)

OOOOoo'QuieresO

¿bandera para mostrar subopciones¿bandera de ejec. de macros¿bandera de cbmprob. demacres¿bandera de grab. de macros¿nivel del menú actual¿nivel de la opción actual¿nivel de la subopcion actual

¿indica camino hacia menú actual¿camino hacia opción actual¿camino hacia subopcion actual

¿ubicación de BUFFER's en TABBUF

;# de opción actual;# de subopcion. actual.¿X que origino menú actual

terminar (S/N^Q^'SN1

¿Variables demacras delMASM

Page 25: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - TNICIALASM H-2

mopaux dbmopauxl dbm opa el: dbmbcbyte dbmbcinenii dbmbcpos dwinbcbuf dwvideoseg dwpanbuf dbmmvxl dbmmvHn dbmmvlinl dbmmvcar dbmmvdir dwmv?aux dbmv?auxl dbmpmprx dwmaylin dbmaycol dbdirsal dwtiprat dbtiprutl dbjnrauxl dbmraux2 dwmraux3 dwdirret dwdiract dwinword dwgetword dwmnmos dbmdirop dwmoslin. dbm os col dbrnpddir dw

OOOOOOO

O3680 dup(O)

OOOooooooo2 dup(O)

OOo

;sitios para paso de dato de;leclaclo sí hay rutina de escape

¿segmento de video¿sitio para salvar pantalla

¿sitio para dir. de rutinas de usuario;íipo de rutina: 1, 2 o 3;tipo de rutina de opción actual.

m c u r dwinibdir dw

fasepír dw

o2 dup(ü)2 dup(O)

OOO

Ooooof\

of \

r>\J

;Aqui se guardan, datos mientras se;corre la rutina del usuario.^Dirección de retorno

¡salida de GETKEY

¿puntero de íase de programa (73,23);p"oníero de valor que va en (73,24)

íhorrnfgrab dbfprob dbicorr dbfinnc dboíroaux dbblanco db

"Grab-A/í""Prob-M""Corr-M""Macros"G

78dup|2!

¿bandera que indica paso por "ooír".

Page 26: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKNDICK H - 3

insprog db

dbdbcíbdbdbdbdb

escrnm dbnombvif dbareamac dbmacl dwnummac dbcontmcr dblongmac dbcontmac dbbufímnc dwnombmac dbnomac dbnoroorn dbgrmac db

dbborrmac dbpi'omac dbejemac dbescrncr dbinsmac db

dbdbdbdbdbdbdbdb

lismac dbpcbmac dbcolven dbcollincolexpcolactcolJact

dbdbdbdb

OPCIONES VALIDAS EN LOS MENUES.M,0" Estas son jas opciones válidas para cualquier mentí :"5G" Se puede elegir una opción por su "letra clave' o ""con las flechas y ENTER. ",0" "O presenta/quita las subopciones de una ""opción en una ventana. ";0" ESC permite salir al nivel superior de menúes. "30" T* presenta esta pantalla de ayuda.",()" AK lleva a las opciones de inacros del programa.",O11 ...Presiona cualquier tecla,..",0" Nombre del macro (7 car. máx.) o ENTERpnra salir...",0

7,9 dup (0) ;buffer para recibir el nombre del macro64 dup (0) ;indice de mncros8*64 dup (0) ;area de macrosO ;numei:o del macro actual en el ÍndiceO ;interface de macros de INICIAL y usuarioO ;longitud del macro actualO ;contador de posición en el macro actual64 dup (0) ;macro actual7 dup (0) ;nombre del macro actual

"Macros solo desde menú principal. Presiona una tecla.",0"No hay sitio para nuevo macro. Presiona una tecla.", O"Inicio grabación de macro. Terminar: AK. ""Presiona una tecla.",*)"Borro este macro (S/N)?"30323"SN""Inicio prueba cíe macro. Seguir: ENTER, Terminar: ^IC'jQ"Inicio corrida demacro. Presiona una tecla."30"Fin del buffery .fin del macro. Presiona ESC. "5033 dup (20h)3"MACROS."30

" Se pueden usar hasta 8 macros de 64 ""opciones máximo. ",0" Ingresa desde menú principal con AK,"S0" Escribe el nombre del macro. Termina con ENTER.",0" Si es nuevo, defínelo.",0" Si es viejo lo puedes probar, correr o borrar.",0" Este es el índice actual demacros:'l306 dup (20h)64 dup (20h)30

"Probar...P Correr...C Borrar...B",0J3,"PCB"bnnonn ¡atributos: color de ventanabnnonn ;color de lineabnnonn ;co1or cíe explicaciónbnsubb ;color de subopcion actualbninv ;color de opción actúa]

; Variables para uso del ratón*Para los macros:

Page 27: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - INICIAL-ASM

vari STRUCTvar] 1 dw Ovarl.2 dw O

var] ENDSvarratonl vari <030>

;* Para los Macros: Mposicion, MfonnaCursorvar2 STRUCT

var21 dw Ovar22 dw Ovar23 dw Ovar2 ENDS

varraton2 var2 <G,0,0>

;* Para macros: MPresiojiado,MHberado,Mocultarvar3 STRUCT

var31 dw Ovar32 dw Ovar33 dw Ovar34 dw O

var3 ENDSvarratonS var3 <0,0)030>

visible dw O ; indica si e] cursor esta activado/desactivado (.1/0)

Lineal db 4,12,20,28,36,44,52,60,68,76,0Ltnea2 db 1.36,37,63,80.0 járve para líneas 2,3,4,5Linea21 db 72579,0Linea 6 db 36,37,80,0 ;sirve para líneas 6,7LinealO db 1,36,46,70,79,80,0 ; sirve para .líneas 1.0,11,12,13,14,15

; 16J 7,18,19,20,21,22Linea23 db 7,15,24,33,39,45,53,62,72,80,0nurneroop db O ; indica cuantasa opciones hay en

; la línea de menii

;AREA PARA CÓDIGOi —

.code

extrn rinicaiear,rJ5nal:near,ñinciones:nearextm nmaxbnf:abs,restorvec:near

ninfbuf eq_u 7 ¡informaciones asociadas a bufferlonglin equ 160 ;80*2 (incluyendo atributos)íleder equ 77 jteclas pulsadas:

Page 28: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - OTICIAL-ASM H - 5

fleizq equ 75jQearr eqn 72fleaba equ 80cr equ 13ctrlo equ 15ctrjp equ 16ctrli equ 9ctrlk equ 11esqsi equ Odahlinsup equ Oc4hesqsd equ Obfhtínlat equ Ob3hesqü equ OcOhesqid equ Od9hbnnorm equ 7bnsubb equ 09hbninv equ 78hmaxmac equ 64

inchide inimac.asminclude mouse.asm

inicial proc near

;codigos para dibujo de cuadro

subrut

;vicleo nonnaí (B/N);siibrayado intenso

;inverso;macros de 64 words máximo

;incluir archivo de macros INTMAC.ASM

;submtinas de macros del iVÍÁSM.inicio:

movmovmovmovmovmovmovmovmovcmp

Je

addviciad dr:

movmovmovmovcidxorrepjnov

i_l: pchar

ax,@data pnicializo OS y .ESds,axbx,4ch.ax9word ptr es:[bx]ambiente, axaxs40hes,axax,es:[63h]dxÍGbOOOhax,3b4h.

vidaddrdx5800h

videoseg,dxes,dxax,0720h ;20h = " ", 07h = video normal.cx,2000

dijdistosw ;borro pantallac!325Oah ;escribo 25 LF para poner

Page 29: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - miCIALASM R - 6

dec el jcursor al fin de pantallajnz i_Jmov faseptr, offset fnormmov valplr,offset blancomreseteo van'atonl,visíble,ratonpresentemov varratonl.varll,77FFhmov vamttonl.varl2j7700hformacursor G,varratonJ ,ratonpresenlemmuestra 0,visible3ralonpresentemov varraton].vari 1,0 ;7mov varratonl.var.1.2,0 ;192rnmovera varratonl,ratonpresente ¿mueve el cursor del ratón a la posición

;que estaba antes de salir de pantallacalí rinic ;ratina inicial de usimrio.guarpantal]a ;muestro instruccionesImppnlayuda insprog, 8,collactgelkeyresfpan tallamov nive^O pnícializo variables q;iemov biiffer, 1 ;manejan, fliijo del programa.mov bufferl^Uh ;J.lhmov bopCjO ;no subopciones.mov bmaCjO pío macros.mov bver,0 ;no verificar rnacros.mov bgmaCjO ;no grabar macros.mov x,2 ;1 ;opcion actual

a_nivel:mov y, O ;subopcion actual

bjsubnivel:bufcla nclave3buffer ;Variables del menú actualmovbuf respbufjbuffermov al,nivelmov respnível, almovbuf bufferljbuffermov al,nivelmov niveU,al ;Variables de opción actualinc nivel 1nunivel bufferl,nivel!,xbufcla nclaveÜ sbufferjmovbuf buffer2,bufferlmov aljiíivelJmov nivel2,al ;Variables de subopcion actualinc nivel 2nunivel buffer2,niveí2,ybufcla nclave2,buffer2explica nclave2 ;Explico que hace la subopcion

Page 30: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - mTCIM-ASM 1 1 - 7

;muestro ventana de subopciones?

;sij pero salvo pantalla.

e_veníatia:cmp bopc,ljne b_s5guarpanlallamenuvent n clavel

b_s5:memilinea nclave ;muesíro menú,

statusf ;fase del programa ystatusv ;valor dado por usuario.rnov otroaux,0

c_ppcion:opción? ;recibe datos de teclado.mov aí,mopact ;# de la opción elegida.

c_op.l: actuar ;salta ala nitina correcta.dw offset oizc^offset oder,offset oarrdw offset oabas offset ore15 offset ootrdw offset octOj offset octp, offset octkdw offset ocll

oizq:

o den

oarr:

meni.zq nclave ;pasar a opción a la izquierdajmp b_subnivel

mender nclave ;opcion a la derechajmp b_subnive]

cmp bopc,lje c_o*"ljmp c_opcion

;subopcion. superior si.;lahayysiBOPOl

c oal:

;subopcion inferior si;laliayysiBOK>l

cmp tipnitl,3 ;opcion tiene subopciones?jz c_oa2jmp c_opcion ;no.

c_oa2: menan" nclavej. ;si.jmp b_subnivel

o aba:cmp bopc, 1je c_ob3jmp c_opcion

c_ob.l:cmp liprull,3jz c_ob2jmp c_opcion

c_ob2: menaba nclaveljmp b_subnivel

oret:inc nivel ' ;se presiono ENTER, correr.nunivel bufferjjiiveljX ;nitina de opción actual.

Page 31: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DÍICIAL.ASIVI H - 8

c_or2: cmp y, Ojne c_orlcmp íiprutl,3je c_or3jmp c_oo2

c_or3: rnov xsljmp c_po2

c_orl: mov al;ymov x,aljmp c_oo2

ootr:

c ool

valida? nclaveje c_ooljmp e ventana

¿se dígito una opción desconocida.;esta entre las validas del menú?;no.

;si, correr rutina de esa opción.mov y, Umov x,alinc nivelnunivel buffer5nivelxmov otroaux, 1

c_oo2:bufcla nclave, buffer ¿aquí se transfiere el control alrutina nclave ¿usuario y este lo devuelve.

c_oo3: actuar ¿actuar de acuerdo a liprut,dw offset rnorm.,offset rinv,offset rrama

morra:movbuf buffer3respbuf ;normal, quedarse en nivel actual.mov aljrespnívelmov nivel, aljmp b_subnivel

nnv:movbuf buffer3respbuf ¿inversa, salir a nivel superior,mov al5respnivelmov nivel, aljmp íl_supemivel

rrama:cmp otroauXjljne rramalmov x. 1

rramal : jmp a_nivelocto:

cmp bopc, 1je c_ocolmov

profiíndizar.

;si BOPC=1 hacer O y viceversa.

jmpc_ocol: mov

mov

bopc, 1c_oco2

bopc,0

Page 32: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - H - 9

c_oco2: jmp b_subniveloctp:

guarpantallaImppntayuda insprog,8,col]actgetkeyrestpantalla

jmp b_subnivel

;mostrar instrucciones.

octk:

c okO:

mov contmcr50guarpantallamov ax,offset blancopmenu 24,colexpcmp nivel, Oje c_okOmov ax, offset nomacpmenu 23, c olla ctgetkeyjmp c_ok5

mov x,lmov y, Omov bopc,0mov ax,0push espusli dspop esmov di, offset nombufinc dimov ex, 9rep stosbino v ex, maxma cmov di,offset buffmacrep stoswmov contmaCjOmov ex, 7m ov di, offs et nombma crep stosbpop esindrnacImppntayuda, insmac, 8, colla ctmov ax, offset escmmpmenu 23, colla ctmov faseptr, offset jSnacstatusf

;Rutinas de macros.;reset a byíe de interface.

;nivel actúa] era O?

;no5 salir.

;los macros se deben iniciar;desde el mismo punto de partida.

;borrar área de nombre de macro.

;borro buffer de macros.

;borro nombre actual.

;prepara un Índice de macros.

;instrucciones de macros.

¡muestra fase del programa.

Page 33: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - OTIOALASM II - 1.0

;macro antiguo?

;SL¿no, grabar macro nuevo.

inbuff nombuf ¿recibe un nombre.mov si,offset nombufinc simov al, [si]cmp al,O ¿se dio nombre?jne c_ok01 ¿si.mov fa'septr,offset fhorm ¿no3 salir.statusfjmp c_ok5

c_ok01: getnmac ¿obtengo numero de macro.cmp nummaCjOffh ¿macro nuevo sin sitio?jne c_°kl ¿nomov axs offset noroompmenu 23,col]actgetkeymov faseptr, offset fiíormjmp c_ok5

c_okl: cmp nnmmac,80hjb c_ok2jmp c_ok3

c_ok2: mov ax,offsel grmacpmenu 23,collactmov faseptr, offset fgrabstatusfgelkeypush espush dspop esmov si,offset nombufadd sij2mov di, offset nombmacmov cx57rep movsbpop esmovjmp

c_ok3: sub nummac,80hmostrar pcbmac,23,coUactactuardw offset c_ok313offset c_ok32,offset c_ok33

c_ok31: mov ax,offser promac ¿probar macro.pmenu 23,collactmov faseptr, offset fprob ¿mostrar fase.statusfgetkeycali inimacmov bver,l ¿banderas para probar macro.

¿bandera de grabación,

¿macro viejo.

Page 34: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - HÍICIAL.ASM H-U

movjmp

inimac:pushpushPopmovmovmovmuíaddmovmovreprnovmovmovmuíaddmovmovincmovmovrepmovpopretn

bmac,lc_ok5

esdsessi offset maclaljnummaccl32*maxmacelsi,axdi, offset buf&naccx^maxmacmovswsi, offset areamacal,mimmaccl,8elsi,axal,byte ptr[si]longmac;alsidi, offset nombmacex, 7

movsbcontmaCgOes

;paso macro al. buffer Buf&nac

;obtengo datos de macro actual.

;RUTINA DE MANEJO DEL RATÓN

public pantallapantalla proc near ;rutina de tratamiento del ratón

mimiestra I,visible3raíonpresente ;macro; hace visible el puntero;deí ratón

mposicion vaixaton2}ratonpresente ;macro: obtiene la posición, del;puntero del ratón

mpresionado 0;varraton3,ratonpresente ;obtiene el estado del botón.;rzqmerdo del ratón

;ax = posición vertical;bl = pixel por carácter en y;ax/bl;se está ejecutando alguna;opción de menú?;si, ratón no debe realizar nin-;guna opción;el ratón está en línea 1 (menú)?

mov ax,varraton2.var23mov bl,pixelydiv blcinp ejecutamenu, 1

e noopcon

cmp

Page 35: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - H- 1.2

amovcmpjnecmpjbemov

mov

nolsi, offset linealvarratonS .var32, 1noenterlvarraton2.var22332esescejecutamemijl

aXjlcGdhfinpantalla

noenterl:mmovimiento varratonl,ratonpresentecmp varraton 1 .vari 1,0jne simo viocmp varraton] .vari 2,0je noopcion

simo vi o:

;no;si;se presiono botón izquierdo del ratón?;no

;es la primera opción(..)?¡si, enviar código de ESC¡indicar que se está ejecutando opción,¡de menú

;enviar el código de Enter

cmpjecali

cmpjecmpjecmp

jaincmovmovjmp

esesc:mov

vents 1noopcionscanlinea

x,blnoopcionbx,0ffh:finpantalla.lbl,numeroop

noopcionbxx,bl

axs4bOOhfinpantalla

ax5011bh.finpantaUa

¡se está en edición de ventanas¡si, entonces ratón no hace nada¡entrega en bl la opción sobre la

¡que está el puntero del ratón¡es igual a la opción actual?

¡se está fuera de cualquier opción?¡si, no se hace nada¡es el valor de bl. mayor anúmero

¡máximo de opciones del menú?¡si, no hacer nada

¿incrementarnos bl¡incrementar el apuntador de opciones¡código de flecha a la izquierda

¡código de ESC

nol:cmp ax,23 ¡es la línea 23 (funciones)?jne no23 ¡nocmp varraton3.var32}l ¡se presiono botón izquierdo del ratón?jne noopcion ¡no, no hacer nada.mov si,offset Jinea23 ¡cali scanlinea ¡ver que sobre que función se estámov ax,3aOOh ¡código dePladd ah,bl ¡sumar el número de opción para obtener

¡el código de la función respectiva

Page 36: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE H - INICIAL-ASM JH - 13

mov ejecutamenu, 1 ¿indicar que se está ejecutando;una opción

cmpjecmpjemov

noleer:

no23:cmpjeCITlp

jnecmp

cmpjacmpjnemovpushcalipopcmpjacmpjnecmpjne.movmovcmpjemovmov

ax,40001inoleerax,4300hnoleerejecutameniijO

fbipantalla

ejecutamenu,!noopcíonvarraton2.var21;1 ;se presionó botón izquierdo del ratón?noopciou ;noaXj2 ;es mayor que la línea 2?

noopcion ;no5 no hacer nadaas, 5 ¡está" en las líneas 2 a 5?no2_5 píovarraton3.var323l. ;se presionó botón del ratónnoopcionsi, offset Iinea2axscanJinea ;bl = ventana sobre la que está el punteroaxax?4no3bx,lno3vent;lno3

espgup:mov

¡estamos en línea 2, 3 o 4?;no¡es 3a barra de movimiento?¡no;se estaba editando ventanas?¡no

ventnueva,2 ¡activamos la ventana 2(código)al,Ventnuevaal,Ventactual ¡es ventana actual igual a ventana nueva?espgup ;siax^OfOOh ¡enviar código de TABventnueva52íinparitalla

ax^OOh. ¡enviar código de Página Arribafinpantalla

no3:cmp

cmpje

bx,2novent2ax,2noopcion

;es área de ventana 2 (código)?:no

Page 37: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EflCIW-ASM H - U

mov VentNueva,2 ;activar ventana 2jmp fin3_22

novent2:cmp bx,3 ;es la barra de la ventana O?jne noventOa 10cmp vent,l ;se estaba editando en ventanas?jne activarventO ;nomov aljVentnuevncmp aljVentactual

activarventO:mov VentNueva,0 ;activar ventana Oje ediíventOjmp fin3_22

editventO:cmp varraton3.var32,l

no opción;enviar código de flecha arriba

jnemov ax,4800hjmp .finpantalla

noventOa:cmp bx,4 ;está sobre la ventana Ojne noventO ;nomov VentNueva;0jmp fín3_22

noventO:cmpjne no opción.

;es la ventana 1?;no

mov ^/'entNueva) .1 ^activar ven lana .1mov al,ventnueva ;cmp al jVen táctil al ;ventana nueva = a ventana actualje ediíventl ;sijmp fin3_22

editventl:rnov si, offset Iinea21cali scanlinea ;es la baira de ventana 1.mov ax34bOOh ;enviar código de flecha a la izquierdacmp bx,2jne Jlechaizq21mov ax,4dOGh

flechaizq21:jmp finpanlíilla

no2_5:cmp ax,7ja no6_7push ax

;código de flecha a la derecha

; está el puntero en líneas 6 o 7?;no

Page 38: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APETÍDICE K - 1KIOAI-ASM H - 1.5

mov si,offset lineadcali scanlinea ¡ver sobre que ventana está el punteropop axcmp bXjl ;estamos en la barra de ventana 2jne novent2a ¡nomov VentNueva,2 ¡aclualizarventana 2jmp Jm3_22

novent2a:cmp bx,2 ¡estamos en ventana 2jne noventOb ¡no.cmp vent,l ¡estábamos editando en ven tanasjn e a cti varven tO a ¡nomov a 1, ven tnu evacmp aljVentactual

ací ¡ vaivén tOa:mov VentNuevajOje editventOajmp fm3_22

edil ven tOa:cmp varraton3.var32,1 ;se presionó botón izquierdo del. ratónjne noopcionmov ax,5000h ¡enviar código de flecha abajojmp finpan talla

¡esta sobre la ventana ONoVentOb:

cmp bx,3jne .noopcionmov VentNueva,0 ¡actualizar ventana Ojmp fin3_22

no6_7:cmp ax¡22 ¡estamos en las líneas 8 a 22ja noopcion ¡nomov si,offset HnealO ;push axcali scanlineapop axcmp ax,16ja no!5acmp ax,14jb no!5acmp bx,ljne nol 5cmp ventjljne nol 5mov ventnueva,2mov a],Ventnueva

¡vemos en que posición está el puntero

¡es línea 8 a 16)¡está sobre líneas de 14 a 16

¡está en 1a barra de ventana 2;no

Page 39: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - IKICIA1_ASM: H - 16

cmp aljVentactuíilje espgdownJTIOV aXjGfOOh ¡enviar códig de TABjmp finpantalla

espgdown:cmp vaiTaton3.var323]jne noopcionmov aXj51QOh ¡enviar código de página abajo

fínp anta lia

nolObx,6no!5ventj.lno!5ven táctil al; 4no 15aljVenínuevaal, venta ctualiguallO_20cx,0fffeh

no.15a:cmp

cmp

cmpjnecmpjbmovcmpjnemov

retardo 1:loopjmp

iguallO_20:cmpjnemovmov

nolO:

¡cambiado 97/03/09

retardo 1espgup

vent,lno 15venínueva,5ax,0f00h.fin pantalla

¡actualizar ventana 5

cmp ax.20

cmpjnecmpjnecmp

bx,<5no!5venl; 1

movcmpjejmp

espgdownl:mov

ven tactual, 4nol 5 ¡cambiado 97/03/09aljVentmievaal, ven tactu alespgdownl

iguallO_20

Page 40: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H -

retardo:loop retardomov ax,51GOhjmp finpantalla

JiolS:cmp bx,2ja novent2bmov VentNueva,2 ¡actualizar ventana 2jmp fin3_22

Novent2b:cmp bx,3jne NoventSmov VentNueva,3 ¿actualizar ventana 3jmp £m3_22

NoventS:cmp bx,4jne Novent4mov VentNueva,4 ¿actualizar ventana 4jmp .fín3_22

NoVent4:cmp bx,6ja noopcionmov Ventnueva,5 ¿actualizar ventana 5jmp fin3__22

noopcion:mov bx,0fflijmp jQnp antall a J.

fin3_22:mov a^SbOOh

finpantalla:mov bx,0mmueslra 0.visible.raloiipresenle ;macro: oculatar puntero de ratón

finpantalla 1:retn

pan talla endp

II - 1.7

scanlinea:mov ax,varraton2.var22mov bl,pixelxdiv blmov bx,0

mayor:cmp byte ptr [si+bx],0je nohayopcionescmpinc bx

Page 41: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - QíIOAUXSJVC H - 1 8

jbe menoriguíiljmp mayor

nohay opciones:mov bXjOffh

menorigual:reLn

c_ok32: mov ax, offset ejemac ;correr macro.pmemí 233collactmov faseptr, offset fcorrstatiisfgetkeycali inimacmov bver,0 ;batideras para coirer macromov bmac,J.jmp c_ok5

c_ok33: mov faseptr,offset fiíonnstatusfmostrar borrmac,23,co11act ¡borrar macro?cmp al,ljne c_ok5 ;nomov ax,8 ;sipush espush dspop esmov cl,nummacjnul cJadd ax,offset areamac.mov di,axmov ex, 8xor ax}axrep stosbmov ax,2*maxmacmov clj.nummacmuí eladd ax, offset maclmov di,axm ov cx,maxmacxor ax,axrep stoswpop es

c_ok5: restpantallajmp b_subnj'vel

octl:d_supejTiível:

getxpi' jxpi'ev^iilíimo jiibble de] buffer OO

Page 42: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - OTICIAL.ASM I I - 1.9

íiunivel buffer,nivel,0 ;y que ahora pasa a ser 0.dec ni ve]cmp niveljOffli ¡estaba en menú principal?je d_slmov a1,xprev 5110, voy a nivel superior.niov x,aljmp a_nivel

d_sl:moslrar acabar?324-,colexpactuard\ offset d_s3, offset d_s2

d__s2:rnov x,l ;no acabar.mov nivel, On univel bufferjtüveí, 1jmp a_nivel

d_s3:cali rfínal ;ruíina de salida del usuario,

final:cali restorvecmov visible, Ommuestra I,visibl6,ratonpresentepush axxor ax,axmov fs,axmov gs,axpop axmov ah34chint 21h

inicial endpend inicioend

Page 43: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTULQ H - PB.04S£,áS¡yi tí. - 20

MODULO PR0486.ASM

.model small,486.datapublic tabbuf3tabiíif,nffiaxbnf:veiitiiueva,ventactual,ventpiiblíc ejecutameíiijextm visible:word

extrn dirret:iieextm videoseg:word3valptr:wordjCoíveti:nearextm niopaire:byte,niopauxl:byte,típrot:byreextm areamac:near,bgrnac:byfe,bmac:byte,bver:byteextm RegAxiDwoi^^RegBxiDword^egCxLDwordjexím RegDs:word:RegEs:word,RegCs:word,RegSS:wordextm RegSi:DwordJRegDi:Dword;RegBp:dwoi'd3RegSp:dwoj-dextm Flags:word, Eflags rDword, RegTp LDword, regfs:word,re^s: wordextrn PointerLstidworcIjXfej-Addrrdwordextm. vector2f:dword,FLoadExe:byteextm PSPparentiWORDjFileSizeiwordjFileNíinie.'b^eextm FinNormakbytejTablaBrkibyte

mnaxbuf equ 30

tabbuf dbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb

\# de buffers

Ilh>00h,00)is00h300hj00hs00hj00h21hs00hí00h,00hí00h300h300h,001i3IhsOOh9OOhJOOhso6lisOOhJOOh,OOh41h,OOhí001i9OOh3OOhJOOhíOOhJOOh41hJ01hJOOh,OOhJOOhsOOh,OOhsOQh41hj02h300h300h,00h,00h300hs00h41hJ03hJOOh,OOhsOOh3OCfhJOOhsOOh413ii041i300h,001i500h,00h500li500h41h,05h,001i5OOh,OOhsOOhJOOh,OOh4111,0611,001 0011,00 0011,0011,001141)1,1611,0011,0011,0011,0011,0011,001141h,26íi,001i,001i;001i,00h,001i300íi41b,361i,00h,001i,00h)00h,00h5003i41h)46h300h,00hí00h,00h,00h300h41]i5561i5001i,00)iI001i,001i,001i;001i41hJ66h)OOh)OOhIOOh,OOhiOOh,OOh'41h307h,OQh9OOh3OOhJOOhsOOh9OOh4111,0811,0011,000,0011,0011,0011,001141hs09hJOOh3OOhsOOh,OOh,OOhsOOh41Iis19h3OOhJOOhJOOh)OOhsOOh3OOh41h329h3OOhsOOhJOOhJOQh5OOh5OOh

;príncipaí;salir;an;Ínfoi-macion;depiirador;salir a depurar;dpdc

;dr *;salir a dr;drcjura;drb;dmi.

;deb;dm *; salir a dm.:drnl

Page 44: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H - 71CAPITULO H - i'RO-ISS-ASM * *•'-

db 41h;39hIOOh,OOü,OQb,OOh,ÜQh,OOh ¡dmbdb 41h)49h)00h;00h}00h,00ii100h300h ¡dmcdb 41hJ59h)OOhíOOh,OOh,OOh,OOhJOOh ;dmfdb 41]iJOAh3OOhaOQh,OOh,OOh,OOhsOOh ;dfdb 51h)00hj00h,00h300h)00h)00hí00h ¡salirdb 61hJOQh)OOh,QOh>OOhJOOh,OOhsOOh ¡shelldb 7].h,OOhJOOh,OOh,OOhJOOh,OOh,OOh ¡ensambladb 81hJOOhJOOhJ003iJOOhJ00]i)OOhI00]i ¡funciones

tabinf dw ofísel expO,ofFset menuOjoffset rutO ¡principaldb 3dw offset sup,offset menuO,offset salidadb 2dw offset earijoffset menuO,offset ran. ;aadb 1dw offset eijOffsetmenuOjOffeetrmfo ;infomiacion (i)db j.dw offset edjOffset md,offsetnitO ;depurador(d)db 3dw offset sup, offset md,offset salidadb 2dw offset edp3offset menuG, offset rdp ;dpdb 1dw offset edc,offset menuO,offset rdc ;dcdb Jdw offset edj, offset menuO,offset rdj ;djdb J.dw of&et cal,offset menuO,offset ral ;dldb Jdw offset edr, offset mdr,offset ruíO ;drdb 3dw offset supaoffset mdr,offset salidadb 2dw offset edrc, offset menuO,offset rdrc ¡drcdb 1dw offset edra,offset menuO,offset rdra ¡dradb 1dw offset edrb, offset menuO, offset rdrb ;drbdb 1dw offset edrm,offsetmenuO,offsetrdrm ¡drm.db 1dw offset edf, offset raenuO, offset rdtf ;drfdb 1dw offset EDIljOffset menuO,offeet rdi ;didb 1dw offset edebjOffset menuO, offset rdeb ¡debdb J

Page 45: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAFUIILQ H - FR0486ASM H-22

dw offset edm,offset mdnijOffset rutO ;dmdb 3dw offset sup,offset mdm, offset salidadb 2dw offset edml3 offset menuO, offset rdml ;draldb 1dw offset edmb, offset menuO, offset rdmb ;drnbdb 1dw offset edmcs offset menuO,offset rdmc ;dmcdb 1dw offset edf,offset menuO, offset rdinf ;dmfdb 1dw offset edf, offset menuO, offset rdf ;dfdb 1dw offset efjOffsetmentiO^ffset rutO ;termina(t)db 2dw offset eshell,offset menuO,offset shell ;shelldb 1dw offset ensa,offsetmenuO,offset ensambla jensambladb 1dw offset edfjOffset menuO, offset if ;funciones(f)db 1

expO db ' l,0ean db 'Permite cargar nuevo programa a depurar (.EXE o .COM)',0eal db 'Kesetear archivo actual1,0eag db 'Graba archivo nombrado en su estado actual',Oei db 'Información sobre PKO.EXE',0ed db 'Depurador interactivo1,0edp db 'Ejecuta la instrucción remarcad a', Oedc db 'Corre hasta cumplir un. evento: dirección o condición',0edj db 'Ejecuta hasta terminar o enconlrar un punto de ruptura',0edr db 'Puntos de ruptura1,0edrc db Marca un punto de ruptura',0edra db 'Activa o desactiva un. punto de ruptura',0edrb db 'Elimina un punto de ruptura1,0edrm db Muestra la tabla de puntos de ruptura',0EDI1 clb 'Ejecuta una irisírucción',0edeb db 'Busca una instrucción en el segmento de código actual',Oedm db 'Operaciones en la ventana principal de memoria1,0edml db 'Llena desde la posición actual en memoria con un valoij,0edmb db 'Busca un grupo de ciatos desde posición actual en memoria',0edmc db 'Copia desde posición, actual en. memoria a otra área1,0edf db 'Punciones especiales',0ef db 'Findelprograma',0sup db '.Retomar al .nivel superior',O

Page 46: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPOTJLO H - PR04S6.ASM K - 2 3

eshell db 'Salir temporalmente a DOS , se retoma con EXTT,0ensa db 'Ensambla y Enlaza un Archivo .ASM previamente editado con'

db '<F6>',0mensens db 10,13,'**** Ensamblado terminado. Presiona ENTERpara Enlazaro ESC para terminar ****$'mensensl db 10,13,******* Proceso terminado. Presiona una tecla para '

db 'continuar ******$'menuO db '.. Archivo Ihfor Depurar I 1

db ' Salir sHell eXe Función',0,8,' AIDSHXF!5OfIhmd db '..Paso Corre ejecuta Reinicio pArada I Tnstr Busca1

db ' Memoria! Función',0,10,'PCJRAIBMF'5OJíhmdm db '.. Llena Busca Copia Función',0,5,' LBCF',Q:finmdr db '.. Crea Act/des Boira Muestra'

db ' Función',0,6,'CABMF',OfEh

Mf* I

revers dbwarning dbnormal dbsubbold dbboldbmenufloatcua!2cualsnoverflow dbautoseg ddautooff ddmein loe db

clbdbdbdbdb

70hOf4h79Ofh30hOO1

ivideo reverso

;atribnto para menúes

didtdtdtdtdi:dtdt

OSTOST1ST2ST3ST4ST5STÓST7NANPOS dbNANNEG clbZERO db '+0memocopl db 332 dup(O)memocop2 db 29 dvip(O)

jvariables ¡)ara funciones'instrucción incoirecta, intente otra vez'sO? ;meinoria relativa (PgUp y PgDn)? ¿memoria relativa (PgUp y PgDn)94DUP(0) ¿variables para coprocesador

¿PILA COPROCESADOR

'+N.AN•-NAN ,0

prevdiccopcopsignmsignexpdms

dwdbdbdbdd

OOOOo

¿memoria para ventanal del coprocesador¿memoria para veníana2 del coprocesador

¿puntero mamona 1 coproc.¿identifica tipo de numero de Ja pila del cop.¿signo de mantisa¿signo expon ente¿dato en. decimal del exponente

Page 47: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PRO4S6.ASM li - 24

vai'2 ddmantis delmantisf dtstatcon dwcontcon dw£3? dbf5? dwcodhex dwcodhex2 dwcount dbprevcod dwvjdeomodcflujo dbbnflujo dbvntmono dbvntcolor dbarchmcr dbvlinOvcodvcod2vprol

vi-egVpSW

vexpcvstkvopmlvcopOvcopl.vcop2vhm.vamvccvc.1vc2vc2svc2ovc2hvc2d

dbdbdbdbdbdbdbdbdbdbdbdbdbdbdb

dbdbdbdbdbdbdb

OOOO

OOOOOOO

db

¿resultado de¿contiene mantisa en hexaclecimal¿mantisa en decimal¿palabra de status de] coprocesador

¿palabra de control del coprocesador¿Presentar coprocesador o No¿presentar instrucción completa o No¿contiene .igual valor que regTp

vmemrel dbvclhvdavrvbvhasvensvcond

dbdbdbdbdbdbdb

¿para código extendidoO ¿modo de video

70h,337,79h370h ¿atributos para menúes en color70h57,7,7,70h ¿y monocromáticos'winbn.vnt',0 ¿archivos de ventanas:rnonocromatico

'wincolor.vnt',0 ¿a colorPpro486.mcr',0 ¿archivo de macros'UNEAO',0 ¿nombres de las ventanas'CODIGO',0'CODIGO2'50 ¿para código extendido'PRO 1', O ¿presentad ónPRO2';0 ¿presentación'REGIST',0'KLAGS',0EXPCOD',0'STACK',0'OPCMEMl',0'MEMCOPO',0'MEMCOPl',0'A/1EMCOP2',0'HEXMEM,0

'CCOD',0'COPl',0'COP2'}0PCOP2SEG',0ICOP2OFF'J0ICOP2HEX'30'COP2DESP',0

'MEMRETJ,0DHEXT,0DASC',0fREG',0DBIN1

'HASTA',0ENS',0

'.O

Page 48: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPiniLQ K - FRO43Gj\SM H-25

vcban dbvmom dbvrdir dbvfhorm dbvrv dbv£> dbvascl dbvasc2 dbvnomarch dbvmpvil.

dbdb

vcopia dbvñmc dbVÍ1YPvayavaydvayevaym

dbdbdbdbdb

'CBAND',0"RUPNOM',0tRUPDlR',0TJNNORM',0

'REGVAL',G'DECHEX',0hASCUl!,0'ASCII^O

'NOMARCH^QKUPTURAS',0'LLENAR',0'COPIAR',0FFUNCTON1J0'AYP',0'AYA',01AYD'50'AYE',0

vayr dbvinfo dbvbarral dbVbarra2 dbvnarch dbvideo dbvcop dbvinst clbvnoarchivo db

'AYR',0'INFO',0'BARRAl',0'BARRACO

'VIDIO150'COP',0TNST',0

•NOFILE'

¡ventana de eiTor de coprocesador no presente¡ventana de error de instrucción inválida

,0barra 1 dbbarra2 dbregist dwcódigo dbpswl dbexpcod dbmeml dbslck dbmemol dbbufrup dbopcseg dbopcoff dbxxxxseg ddxxxxoff dd

dbdwdw

dwdwdw

1111 dup(!)14 dnp(0)14dup(58dup(0))23 dup(O)36 dup(?)104 dup(O)18 dup(O)104 dvip(O)168 dup(O)1,1,3,1,15 dup(17)

;buffers para ventanas

sidirldir21dir22dir23dii-24

0,0

0,00,00,00,0

¡direccionesjbuffer para ventana de rupíuras(8*21)

¡opciones predefinidas: DS:0,;DS:8, ES:lOn, DS:18h, DS:20h

¡registro segmento para memoria¡registro offset para offset

¡signo del desplazamiento¡dir. de áreas de memoria que se verán; offset, s egm enío

Page 49: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Tt - ERQ4SS.ASM 1.1 - 26

dir25 dwc1ir21r dwsegcocl dwoffcod dwtabcod dwproxins clwtabrup dbbanens dbtoggsub dwtoggcorre dbopcpaso dbopccorr dbrd6? dbaux dw

0,05 dup(0,0)? ;d? ¿oílldup(?)? ;lii13 dup(?)0

•i- ;t0 ;tc

'SiNo1

'Direc Cond0 ;bar9 9•i •

ceros db 10 clup('O')uno db ]\iline2 dbtiline dbulinel dbbirfcorr dwdsegm dwnlinea dbdhex3 dbdhextnr dbdhexlE dbdhexl dbdbex2 dbddec dbdbin dbdbyte dbinsbuff dbnombrk dbarchivo dbInsEns dbalrprev dbdiiprev dwatrprevl dbcual dbdirprevl dwnomreg dbmpact tlbbrup dbStackLow dwSíackHi dwsiaich dbbufin 1 dwchkl db

27 dupCJ)10 dup(' ')

(,04 dupC l)004,7 dup(O)27,28 dup(0)8,13dup(0)4,7dup(0)4,7 dup(O)10,15 dnp(O)1,0,02,0,0,0,079,81 dup(O)10,11 dnp(O)79,81 dup(O)20 dup(O)000003,0,0,0,0009

9

0

7 dup(O)6ch

¡respaldo de dir21...dir25r. inicial de desensamblado

¿offset inicia] (pagina 0);tabla de inicios de paginas de código

;linea que coincide con CS:IP;l=ruptura en esa linea

;toggle ingreso a subr., , reps;toggle corrida hasta direccion(0)/condicion

;opciones: coirer subruíinas?1 ¿opciones: hasta dirección o condición?

¿bandera para rd600 y rd-700

¿pañi rnem. relativa¿paramem. relativa

¿para recibir nemotecnico¡nombre de breaVpotnl:¿nombre de] Objetivo

¿variable para los registros

¡ruptura actual -1¿bandera para rut de rupturas

Page 50: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

OVECTULO H - ER.O48fi.ASM: '"' ~ 27

chk21 db 13chk22 db 33regs db 'DSESSSCSAXBXCXDXSIDIBP'HneaO db 44 dup(' ');20 dup(O)lineal db 80 dup(")lOini db '</X>IVÍenúes> <F2=Ayuda>!,0FTDirecc db "DirectoF7Condic db 'Cond',0FSSiSubr db 'SÍSubr',0FSNoSubr db 'NoSubr',0tlini db 'FlEdit F2Ayuda F3Coproc F4PntUsr'

db 'F5Cod F6Asm FTDirec FSNoSubr F9Dec¿Hex FIOASCIT',0nomodo db "Modo de video no soportado.',0123d_ db TAB: próxima ventana SHIFT TAB: ventana'

db ' anterior ESC: menú principar30124d_ db 'Acceso a Jas ventanas de) depurador', OlOreg db 'Alterar valor registros',0llreg db Use las flechas para pasar de uno a otro registro',0lOban db 'Alterar valor banderas'30liban db 'Use las flechas ',26j' y ',27,' para pasar a otra bandera',0lOcod db 'Desensamblado!*: Página '.Ollcod db 26,' y ',27,': pasar al otro campo. '

db 'PGUP y PGDN : cambiar de página',0llcodl db '** ATENCIÓN: PGDN: próxima página. PGUP: página 9 **',0lOopl db 'Acceso a memoria',010op21 db 'Acceso a memoria relativa'30Uop2 db 'I y í : Cambio de página (Segmento).1

db ' PGDN y PGUP : Cambio de página (Offset)',010op22 db 'Offset para ventana de memoria relativa',0Uop2d db 'Escriba el desplazamiento con. su signo',0Jlop2o db 'Escriba el offset'jOIlop2s db Escriba el segmentólolOhex db 'Alterar memoria'jOllhex. db 'Flechas: movimiento en las ventanas.'

db ' PGUP y PGDN: cambio de páginas',0lOasc db 'CR^ENTER^O ;TAB-CF10]TAB3ESC-CF10]ESC'30123ens db "Dirección^ : . Escriba'

db ' neraotecnico o ESC para salir',0eirejis db "Este nemotécnico no es con'ecto'jOEnsBusc db 'Escriba el nemotécnico de la instrucción, que desea encontrar',0NoEnsB db 'No se encuantran mas coincidencias en el segmento de código',0EnsWl db 'Es posible encontrar el código de Ja instrucción, '

db 'pero el flujo'jOEnsW2 db ' del. programa no sera necesariamente l

db 'de la forma mostrada.'S0instruc db 'Escriba el nemotécnico de la instrucción a ejecutarse',0J23bkp db TGUP y PGDN: Pasar de página en ventana de rupturas. ESC:

Page 51: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPÍTULO H - FR04S6.ASM H - 2 8

Salir',0123cd db TAB: Pasar al otro campo. ESC: Salii-,',0123cc db 24,' y ',25,' : Pasar a otra opción.'

db ' ESC: Salir. ENTER: Opción',0123rcmp db 'Escriba el registro , o ESC para salir1,0123cmpr db '...y ahora el valor, o ESC para terminarloigual db ' ',0noesreg db 'Este no es un. registro. Presiona una tecla'

db ' o ESC para salir';0nombre? clb 'Escriba el nombre del archivo a depurar (.EXE o .COIVl) ESC =salir',0leo db 'Leyendo...', Ononomb db 'Aunno se ha ingresado el nombre del archivo. Presione una tecla ',0nohay db 'Este archivo no existe. Presione una tecla1,0longO db 'No puedo aceptar tamaño O', Oerrgrab db "Error al grabar el archivo',Ovalor? db 'Escriba el valor o ESC para salir',0bytes? db 'Escriba el número de bytes o ESC para salir1,0buscase? db 'Secuencia en ASCH o hexadecirnal (A/H)?',0busca? db 'Escriba la secuencia o ESC para salir1,0NoIíayStr db 'No encuentro la secuencia en todo el segra.ento',0sigo? db 'ENTER: Busca próxima. ESC: Terminadonoesbrk db 'No existe ese punto en la lista. Presione una tecla1,0

¡MENSAJES AL MOMENTO DE LA CARGANoVnt db 'El archivo de ventanas ha sido aíterado',0ErrAbrir db "No puedo abrir archivo de venlanas',0Errivícr db 'Error' al abiir/crear archivo de macros',0NoChild db 'No encuentro todos mis programas asociados',0ArchOK db l<Objetivo>iisto',0NoParam db '*** Atención: No tengo <Objeíivo>... ***',0MalParam db 'Archivo a depurar no enconlrado. Presione una tecla',0MalExec db 'Problemas en Ja carga del <Objetivo>...',0Listo db 'Operación terminada. Presione una tecla.',0TecSal db 'para salir1,0TecCont db 'Presione una tecla para continuar',O

¡MENSAJES DE ERROR AL CORRER PROGRAMASNoFuncion db 'Número cíe función no válida <presiona una tecla> ','$'Noarch db 'Archivo editor no encontrado <presiona una tecla> ','$'Nopath db "Palh.no encontrado <presiona unatecla> ','$'Noacceso clb 'acceso denegado <presiona unatec]a> ','$'Memonades db ' Bloques de control de memoria destruidos '

db '<presiona una tecla>'.]'$'Nomemoria db 'Memoria insuficiente <presiona una tecla> ','$'Noblock db 'Dirección de bloque de memoria inválido '

db '<presiona una tec3a>','S'

Page 52: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITIHO K - FROJS6ASM H - 29

Noambiente db 'Ambiente inválido <presiona una tecla> ','$'NoFormato db "Formato inválido <presiona una tecla> ','$'

mensajes dw O ¡desplazamiento de los mensajes de errordw offset Noftincióndw offset noarchdw offset nopathdw Odw offset noaccesodw Odw offset memoriadesdw offset nomemoriadw offset noblockdw offset noambientedw offset noformato

varea db 50*256 dup(O) jarea de ventanas¿valores originales de los vectores de interrupción Oóh y 07ho!d6h dwO

dwOoldTh dwO

dwOerror db Oerrorcj db O¡Variables para correr Edit.com,Comrnand.com, Masm.exe, Ltnkexenarch2 db 4034G dup('')

mil db 41,''; ¡parámetros para UNICexenarchS db 40 dup(' '),0dh

Parámetros db 11,' pro486.h!p'JOdh ¡parámetros par F2Parámetros! db 1,' ',0dh ¡parámetros para COMMAMD.COM

nombreS db 'lirLk.exe',0 ¡path deLink.exeNombre2 db 'masm.exe',0 ¡pathdemasm.exeNombrel db 'command.com^O ¡path de command.comambiente dw O ¡guarda el valor del bloque de ambienle desde psp (4Ch)Nombre db 'edit.com',0 ¡path. de edil.com

narch 1 ílb 41,'' ¡parámetros para F6 y para IvrASM.exeNarch db 40 dup (' 'XOdh

viejosp dw O ¡guarda sp antes de hacer EXECviejoss dw O . ¡guarda ss antes de hacer EXEC

FCbloquel db O ¡bloques de control de archivodb 11 clup(O)db 25 dup(O)

Page 53: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CABTUEO K - HR0436.ASM ' "

FCbloque2 db Odb 11 dup(O)db 25 dup(O)

FCbloqueS db Odb 1.1 dup(0)db 25 dup(O)

FCbloc[ue4 db Odb 11 dup(O)db 25 dup(O)

PARA/fBLOQUE STRUCT ;Bloque de parámetros para la funciónarnbientel dw O ;4Bh de DOSparamaddress dw Oparamsegmento dw Ofcbloffset dw Oícblsegmenlo dw Ofcb2o£fset dw Ofcb2segmenlo dw O

PAKMBLOQUE ENDS

pb PARMBLOQTJE <0,0,03050,0,0>pbl PAKIvrfeLOQUE <030I0)03030I0>

; variables para uso del ratónventAcíual db O ; indica la ventana activa actaalVentNueva db O ; indica la nueva ventana seleccionadavent db Oejecutamenu db Opixely db 8 ;indican elnúraero depile] hoi-ixontal y veitical por carácterpíxelx db 8 pnicialmente se asume de 8x8 para pantalla a color de 80x25ratonpresenle db Ovar.l STRUCT

varll dwOvar!2 dw O

var.1 ENDSvarratonl varí <030>

.codepublic rinic3rfínal3;funcionesextm. panlalla:proc3savepspchild:proc,restpspchüd:procextiTi desensdet:proCjAcoríaMiMem:procextrn InstHandler63:proc3SetTerm:pi-ocextrn LoadExe;proc,ReduceLevel:procextrn ExUniq:proc1BxHasía:proc)ExPaso:proc,ExCond:procextrn AssemjproCjExTolahproc^estti-aprprocextrn AddBrkPt:proc,DelBrkPt:proc,TogBrkPt:procextrn EncRegiproCjEncSreg^roCjExTns :procexíin Uenar:proc3biiscar:proc3copiar:proc

Page 54: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - ERO4S6.ASar H - 3 1

in elude provntasminclude jnpro.asminclude mouse.asm

shrvnlsbrmcrsbrpro

relomo macrocidmovmovmovmovmovmovmovmovmovjmpendm

ax,@datads,axaXjVÍdeoseges,axax,mraux3bp, offset diixetds:[bp],axax,mraux2ds:[bp+2],íixdword ptr din'et

;consfruye dirección de^regreso y salta.

programa ************

;Regreso general de todas las opciones a .KLU.TOSalida:

m QV ejecuíam enu, Oretomo

n'nic: caH testtrap ;para elegir nitina cíe paso a pasocali redefvect ;Kedefíne vectores 06h y OTh, instrucción

;no válida y coporcesador no presente¿determino modo de video;en AL

;ubico segmento de info

rinü: mov ah30fhint .1 Ohpush esmov bx,40hmov es,bxmov ah,es:[10] ;veo Upo ele monitorpop escmp al;2 ;acepto modos 80*25 de:16 grisesmov videomod,a1je esbncinp alj3 ;colorje modookcmp al,7 ;o blanco y negroje modookjmp modono

esbn:

Page 55: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHXULO H - PRCWSG-ASM H - 32

mov pixelx59.mov pixely,14jmp modook

modono: piint l^jnomodOjrevers ;modo no soportado, finjmp ríníf2

modook: and ah,18h ;solo dejo los bits necesariosjz rini.12 ;si son O's, es de coloridvnl: vntmono,varea,5Qmov aux.axmov si,offseT bnfhíjo ;atributos B/N para menúesjmp rinilS

rini.12: idvn vnicolor,varea550mov aux,axmov si3offset cflujo ¿atributos de color para menúes

rim"13:.mov ex,5mov di,offse(- colvenpush espush dspop esrep movsb

pop esmov ax,auxcmp aXjO ;todo bien?je rinilbpush axcali presen ;no, presenta el programacali presOprint 5,21,TecSal,bold. ;da mensaje y salepop axcmp ax, 1jne rinillprint 5,20,EiTAbrir,bolcl ;error al abrir o no hayjmp rinifl.

rinill: prinl: 5,20,NoVnt,bold ;No hay espacio o no es de ventanasjmp rinifl

rinilb:iru'mcr archmcr jleo/creo archivo de macros precíeñnidocmp ax,0 ;todo bien?jne rinmljmp rinmf

rinml: cmp ax,2 ;nuevo?jne rinm2creamcr archmcr ;Io creoje rinm2jmp rinmf

rinm2: cali presen ;errorcali presO

Page 56: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CATITULO K - pfi.CM86.ASM: H - 3 3

printprint

ríni2:

rinmf: movmovcalicalicalijncmovmovmovJdsmovintmovmovmovcalicalipriníprint

rn3: calimovmovmovjnc

ririiSm:calicaliprintcmpjneprintjmp

rim'3m.l:printjmp

rin¡3b:movmovmovmovmovmovmovmov

5,2.1 riniflSlackLoWjSp ;todo bien con. ventanas y macrosStackHijSS jtrato de cargar objetivoAcortaMiMemTnstHandler63ReduceLevelrini3

ax,@data ;No pudo bajar cíe niveldSjflxes,videosegdx,Vector2F ;resta uro int 63hax,2563h

2.1 hax,@datads,ax

es,videosegpresenpresO5,205NoChild5bo]d5,21,TecSal,boldrinifi.

LoatlExeax}@dalads,axes,videosegriniSb

presen jeiror al cargar p]-ogramn5 presentopresO5,21,TecSal,bold ;doy mensaje y salgo.FLoadExe54riniSm.15)20}MalParam5boldrimf

rinif

sp,StackLowss3StaclíHiax,regdsxxxxsegjEax ;ial que inicie con Dsclhexseg,eax

autoscg)caxxxxxofíjOdhexorlí)

O

Page 57: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO II - EH.048&ASM

mov autooffjOcal] presen ;presenta el programacali presOprint 5,21 ,TecCont,boldcmp KLoadExe,3 ;no param?je riniSlmov siarchjOffhprint 5}205ArchOK,boldjmp rini32

rinB.l : print 5,205NoParam,boldrini32: getkey

mov si, offset lOini ;preparo y muestro linea Ocali mlinOlimpln 23,normalprint Oj23}l.lini,bmenu

rínifO: cali preopc ;prepara bufíersMEMOl yMEMO2cali pdebngcali delayretn

rinif; getkeycali rfinal ¡salida por errores desde nivel hijojmp rinif2

rinif].; gelkeyrinií2: mov ah,2 ;idem desde nivel padre

mov dl}7int 21h ¡pitarmov ah,4ch ;y terminarint: 2.1 h

presen: mov dl,0ahmov ex, 25

presl; mov ah,2 ¡limpio pantallapiish exinl: 21hpop exloop preslm ov bx, offset vpro 1vnt 'a1

mov bx, offset vpro2vnt 'a'reta

presO; posdir 0,1.9cali presOOposdir 0,22

presOO: mov di,pddirmov ex, 79

O

Page 58: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - FRO486.ASM H - 33

mov aljOcdhmov ahjbold.rep stoswretn

delay: mov ax,4delayl: mov cx,0ffifhde1ay2: ]oop delay2

dec axjnz delay]reín

rñnal: mov di,0 ¡limpio panlalla al salirmov cx52000mov a,\',0720hrep stoswgrabmcr ;graba macroscerrmcrkls dx,Vector2F ;restauro int 63hmov ainl: 2.1hmov amov ds,nxmov Stacklow,sp ;salvo stack y sobo de nivelmov SfackhijSSmov dx,offset rfínlcali SetTerm.mov ah.,4chinf 2,1 h

rJünl: mov ax,@data ;recupero stacky regi'eso a teiminarmov ds}axmov es,videosegjnov sSjStackhimov sp,stack1owretn

rutO:jmp salida

rf: ¡ayuda menú principalcmp otroaux.O :ENXER, pasar->- J J j í

je rffcmp ,mopaux,0jne if£cmp mopauxl,60 ;F2?jne rffstodo

Page 59: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPTnlT.O 1:1 - 3ÍÍ

movmovmovmovmovmovmovmovmovmovmovmovmovmovpushmovmovmovincmovinípopmovmovint-piishmovmov

movint

movmov

movinfjnccalijmp

sim ero oria 1;pusb

ax,@dataíls,axbx, ambientepb. ambiente.1 ,bxbXjOlTset: parámetrospb . p aram a ddress, bxpb.paramsegmentOjaxbx, offset fcbloquelpb.fcbloffsetjbxpb.fcb.lsegmento}axbx, offset iebloque2pb.fcb2offset5bxpb,fcb2segmentosaxbx,offset pbdses,axdi,pb.fcb.toffsetsi,pb. ambiente!siax,2901b2.1 hesdi3pb.fcb2offsetax,290,lh21hbpviejospjSpviejoss,ss

ah, 62h ¿obtener dirección de mi PSP21h

es,bxbXj2000h ¿liberar memoria para ejecuí

ah,4ah21h.sim em oria 1menserrorbíencorridol

dspop esmov bx,offset pbmpv dx,offset nombremov ax,4bOOhint 21,bjnc bienconidol

Page 60: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRCWSG.ASM H "37

cali menserrorbiencorridol:

movmovpopmov

sSjVJejosssp,"viejospbpvisible, 0

numiestra l,visibíe,ratonpresente

rfñraf:

movmovmovmovintitodocalijmp

jmp

cmp

Je

cmpjnecmpjnemovvnl;limplngetcharcaliirmj

íih,2bh,0dh,24dl,0lOh

pdebugsalidardfpn

;ayudíotroaux.Oraff,mopaLix,0raffmopaux3360raff

;oíras fimciones» menú archivos

.jENTER. pasar

;F2?

bx,offset vaya'a'24,nonnal

pdebugsalida

raff: jmp rdfun :otras fimciones

rdf; ;ajaida menu depuradorcmp otroaux.O ;ENTER, pasarje rdxfcmp mopauXjOjne rdxfcmp mopauxlj60 ;F2?jne rdxfm ov bx, offset vaydvnt 'a1

limpln 243nonnaígetcharcal] pdebugjmp salida

rdxf"; jmp rdfun jotras funcionesrdef: ;ayuda menu ensamblador

cmp otroaa\0 jBNXER, pasar

Page 61: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

T-lCAPITULO K - PRO4S6.ASM 11 -

je rdeffcmp mopauXjOjne rdeffcmp mopauxl ;6Q ;F2?jne rdeffmov bx, offset vayevnt 'a'limpln, 24,norma1getcharcali pdebugjmp salida

rdeff: jmp rdfun jotras funcionesrdmf; ;ayuda menú memoria

cmp otroauXjO ;ENTER, pasarje rdmffcmp mopauXjOjne rdmffcmp mopauxl36Q ;F2?jne rdmffm ov b,x, offset vaymvnt 'a'HrnpJn 24jnormalgetcbarcali pdebugjmp salida

rdmff: jmp rdfun ;otras fiíncionesrdrf: ;ayxida menú rupturas

cmp otroauXjO ;KNTER5 pasarje rdrffcmp .mopauXjOjne rdrffcmp mopauxl,60 ;F2?jne rdiíFm o v bx, offs e t vayrvnt 'a1

limpln 24,norma1geícharcali pdebugjmp salida

rdrff: jmp rdfun ;otras funcionesrin fo: ;infbrm a ci on

linppnt ;limpio pantallamov bx,offset vinfo ;muesíro ayudavnt 'a'limpln 23,revei-slimpln 2prinl' l

Page 62: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PROÍS6.ASM H - 39

getcbarcíill pdebugmov sijoffset lOini ;preparo y muestro linea Ocal] mlinOlimpln 23,noiTnalprint 0, 23,1,1. ini,bmenu

ririifl 1 : jmp salida

ran;litnplnlimplnprintmov

rro.1: getlinemovcmpjecmpjnecmpjemovpiisbmovmovmovrepmovmovmovmov.movrej)pop

.rrnf:

;recíbe el nombre del Objetivo23,revers24Jnorma]l)23)nombre?,reversgdreset,].l,24-,arcbivogclreset,0gccod}4 ;ESC?

gccod,! ;valido?rrnlarchivo+,1,0 ;vacio?rrnfj.si,offsetarcbivo-H. ;valees ;paso a PSP del padre y a FileNameeSjPSPparentdi, 8 Ohex, 80movsbax,@dataes,ax

FileNamearchivo+2

ex, 80movsbes

prinl" 0,23,11-inijbrnemipush espush dipush expush axmov es,axmov di,offset TablaBrk ;primero borro buffermov cx,3Q96mov al, Orep stosbpop ax

Page 63: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPrniLO H - EB04S6.ASM: H-40

poppoppopjmp

rrnfl:printjmp

ral:movmov

movpushxormovmovpoplimpln.limplnpushmovcmp

; popjaeprintpopjmp

rrla; popprintcalimovmov

movjnc

rrlm:movpushpushpopmovmovmovreppoppopícidcmp

exdiesral

0,23,1 Hni5bmenusalida

;lee el Objetivo desde discoerror, 0SfackLoWjSp ¿salvo SS:SPStackHijSSaxax,axfsaaxgs,axax23,revers24}normaleseSjPSPparentbyteptres:[80hyesrrlaI,j23,nonomb3revers ;aun no tengo nombreesrrlfesl}23,]eo,revers ¿leyendo...LoadExeax,@datads,axeSjVÍdeosegrrlb

siarchjO ;con 0 índica que no se ha cargado archivoesdsesdi, offset filenameex, 80al,"stosbes

FLoadExe,4 ¿errores en LoadExe

Page 64: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRO486JVSW

jne rrlmllimpln 23:reversprin 1" 1,23 ,MalParain 3 vvarningjmp rrlb.1

rrlml: print l,233MatExec.reversjmp rrlf

rrlb:mov siarchjOfíh ¡con ííh indica que se ha cargado archivomov sp;SlackLow ¡lectura OKmov ss,Stackffiprint l}23?listOjrevers

rrlbl:cali pdebvjggetchar

irlf: mov si,offset lOini ¡preparo y muestro linea Ocali mlinOlimpln 23,riQrmalprinl 0,23,11 ini,bmenu

rinif22:jmp salida.nomarch:

mov ax,dsmov si, offset fílenamemov b,\",offsetvnpmarchvnt 'a'retn

rnlinO: cali prelin ¡preparo linea Omov ax,dsmov bx, offset vlinOmov si, offset lineaOvnt 'a'retn

H-41.

pdebug:cal! mreg ¡prepara y muestra: .REGTSTcmp banens,! ¡Si BANENS=1,no mostrar códigoje pdeb21mov ax,regcsmov segcod,axmov Ea^regjp ¡si REGTP esta en pagina actual,cmp aXjOffcod ¡no cambiar de inicio de paginajb pdeblcmp ax,proxinsjb pdeb2

pdebl: mov oiícod,axpdeb2: cali mcod ¡CÓDIGO

cali nomarchpdeb21:

Page 65: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - EROJ86J\SM M - 42

cali mroem ¡MEMcali mstk ;stck (stack)cali mexpc ¡EXPCODcali mreg ;prepara y muestra; REGISTcali mpsw ¡PSW1 (banderas)

;Presentar instrucciones completas??=1 si

;debo presentar ven tan a del coproc?;no fí?=0--> no présenlo

=1 —> lo resento

dntos nila conrocesador

¡présenlo stat y cont del coproc.

cmp f5?,Jjne copf3?cali mcodcali nomarcb

copf3?: cmp f3?,ljne cop41cali rdfBmmrmiestra n.visibíe.ratOTinresen1;emov ax,dsmov bx, offset, vconOvnt 'a1

mov aXjdsm ov bx. ofTset vcop 1mov si, offset memocop!vnt 'a1

mov ax,dsmov bx, offset vcop2mov si, offset memocop2vnt 'a'mm uestra 1 jvistble,ratonpresente

cop41; cmp FinNormalj] ;acabo?jne pdebSmov bXjOffsetvfnorm ¡ventana de terminaciónvnt 'a1

getcbarxor FinNonnal,!jmp pdebug

pdebS: retn

fijnciones:limpln 23,nonnalprint Oj2

rinif44: i'etn

mcod: piish ds ¡Preparo el buffer CÓDIGO con 13;instnicciones desensambladas

¡y lo muestro en pantallapusb esmov sijOffcodmov di, offset código ;En PRQXIHS sale offset de prox.mov ax5@data jinstniccionmov esaxpush dimov cx:14*58 jlimpío buffer

Page 66: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PJMWSSASM H-43

mov al,20hrep slosbpop dipush di ^impio TABRUPmov di, offset tabnipmov ex, ,13mov a1,0rep síosbpop dipnsh dimov GXjSegcodmov aljChhexascmov íiljClmov cx,bxhexascmov ax,cxxchg al,ahxchg bl,bhmov aux,axmov aux+2,bxpop dimov di, 14mov dhjGffh

pcocíO: mov aXjSegcodcali ' pcrOcmp ítxyegcsjne pcodOlcinp Esi,regipjne pcodOlmov dh,14sub dh,dl

pcodOl; mov ¿x,aiustoswmov -íiXjíHJX+Sstoswmov ds,segcodcali desensdetmov bx}@daíamov dSjbxadd si, exadd díj54

¡guardo el valor del segmenlo que¡ira al inicio de todas las lineas

;13-DL-# de linea (0-12);# linea a resaltarse

¡coincide el CS?

¡coincide el IP?

¡si ambos coinciden, linea debe resaltarse

¡escribo segmento

¡desensamblo linea

cmp byte ptr [di-2],' 'jne pcodScmp al,0jne pcodl

;Si la linea no es muy larga¡pongo el tipo de instrucción.

¡AL = 0 --> byte ptrmov byleptr[di-i],'B'

Page 67: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAlTriJLO K - PRO4S6-ASM H-44

jmppcodl; cmp

jnemovjmp

pcod2; cmpjnemovjmp

pcodq: cmpjnemovjmp

pcodt; cmpjnemov

pcod3; cmpjnepnshmovmovP°P

pcpd31; CTTIPjnemov

cocl6: deejnz

cod7: poppopmovmovmovvntmovmovpushmovmovpopvnt

pcodSíiljl ;AL ~ 1 —> word pír

pcod2byte plr [di-iywpcodSa],2 ;AL = 2 --> dword pírpcodq ;AL — 255 --> nadabyte plr [di-iyP'pcodSalt3pcocltbiteptrrdi-iyQ'pcod3

pcodSbyte pír [di-l],1!'dl,9pcoclSlax

preveo d,íixax

dl:2c-od6

dipcodOes

dsax,ds ;venlana Código.bx,offsetvcodsi,offset código'a1

ax;dsbx, offset vcod2axax,prevcodsi,axax'.,'

codfin; cmp dh,0ffhje pcodSadd dh,3

mov di, 11posdirdljdhmov dijpddir

;no hay línea que resallar

Page 68: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H - ER0485ASM H-45

ncIDOVmov

pcod4: stosbincloop

pcod5: caliretn

dicx;26al,07h

dipcod4pcrOQ

p-esalto linea CS:IP

;resalto bkpts

code?; pushacmp f5?,lie codeO

codeO:

codel ;

pcrO:

wtiucalicalijmpmovmovmovvntmovmovpvishmov.movP°Pvntcalipoparetn;veo si

J.I.AI Wii ,.UVJ

mpswmmemcodelax,ds ;ventana Código.bx, offset vcodsi, offset código'a'ax,dsbx, offset veo d2axaXjprevcodsi^axax'a'nomarch

AX;SI pertenecen a TABLABRK y si es asis

pcrO.1.

;pongo un, 1 en la entrada respectiva de TABRUP si;es punto activo o 2 si es .inactivostodomov dijOifset TablaBrkmovmovmovmovsh.lcmp

Je

cmpjnecmpjnemov

eh,Q ;GH^ del bkpt buscadobl.ch

cls4bXjd -multiplico por 16byte ptr[di+bx],0 ;veo si termine la tablapcr03[di+bx+12]ísi ;offsetigiial?pcr02 ;no[di+bx4-14]sax ;si, segmento igual?pcr02 ;no

Page 69: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO II - FHO436JVSM Ff - 46

cmp [di+bx-H.],al ¡si, hay un. bkpt. Desactivado?jne pcrOllmov al,l ¡si

pcrOJ 1: inc al ;AL=1 activos, 2 inadivosmov bl,13sub bl,dlmov di,olTset TabRupmov bh,0 ¡BX-i-DI apunta a enlrada en TABRUPmov byte ptr[di+bx],aljmp pcr03 ¡salgo

pcr02: inc ch ¡preparo siguiente búsquedajnz pcrOl

pcr03; rtodoretn

pcrOO: ¡busco en TABRUP las lineas que tienen bkpts y las resallo.mov nlinea, Omov si,offset TabRup

pcrOOl: mov bl,nlinea ¡para cada linea veo si debo resaltarmov bh,0cmp byte ptr[bx+si],0je pcr002 ¡no resaltojnov l,2h ¡resaltocmp bylept.r[bx+si],3 ;es aclivo?jne pcr003mov dl,4h ;si, video reverso; no, s

pcr003;mov ch,bladd ch,4posdir l,chmov di,pddirinc dimov al, dicali rdcdOl ¡resalto 4 casillas

por002: inc nlineacmp nlinea, 13jne pcrOOlreín

prelin: mov bx,di ¡preparo LINEADmov di, offset lineaOpush espiish dspop esmov al,1' ¡primero borromov ex, 44rep stosb

prll; mov ex, 44 ¡escribo LINEAOmov di.ofísel ÜneaO

Page 70: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

*[K SupxXE dodxo dod

AiSOjS

'[G Sqox-iqs

£jo AOUCxo qsndXE qsnd

AOLU

AYSOJS

:£[B Svjoxxe dodxo dod

AÍSO.JS

[O AOLU

Xo qsndXB qsnd

AOUI

aiiídaicE

jíquoso oí

XB dodxo dod

AVSO}S

ITP^

'p AOLU

xo L|sndXB qsnd

AOLU

so dodsp qsndss qsnd

cip AOUI

dod

qsojsof

dixioqspot -Ttí-lcí

Page 71: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO ir - FRO4gffj\SM

stoswmov eax,RegBxpush axpush exmov el, 16shr eax,clxchg al,ahstoswpop expop axxchgstosw

movpushpushmovshrxchgstoswpop

POP

xchgstoswmovpushpushmovshrxchgstoswpoppopxchgstoswmovpushpushmovshrxchgstoswpoppopxchgstoswmov

eaXjRegBpaxexc1,16eax,clal,áh

exaxal,ah

j,eax3RcgCxaxexel, 16eax,cla!3ah

exaxaljah

eax}RegSiaxexel, 3 6eax,clal}ah

exaxal?ah

EaXjReglDx

;Leo un registro del usuario

;pongo MSB antes de LSB;y guardo en ef buffer.

Page 72: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - EROJSfiJVSivr1 1 - 49

pushpushmovshrxchgstoswPoppopxchgstoswmovpushpushmovshrxchgstoswpoppopxchgstoswmovpushmovshrxchgstoswpopPopxchgstoswmovxchgstoswmovxchgstoswmovxchgstoswmovxchgstoswmovxchgstoswmov

axexel, 16eax,cla]3ah

exaxal,ah

eaXjRegDiaxexcl.16eax,clal,ah

exax31,3*1

eaXjEflagsexc],J.6eax,clal,ah

exaxal:ah.

ax3RegFsal,ah

aXjRegGsal,ah

ax,RegCsa!3ah

ax,RegDs ;E1 orden de los registros es ela1,ah ¡adecuado para la ventana REGISTRO.

aXjRegEsal,ah

ax.ReaSs

Page 73: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

T'xq

ZAiSdd

AOUI

qsojsAOUI

ouf

.L'xeSAisdd

AOUI

qsojsAOUI

oufpl

J/XG

iMsdd

pMsdd

AOUI

qsojs :iA\sdtlAOUI

ouf[M

AOUt

qsojs :pMsddAOUI

ouf

j/xeOMsdd

p'xq

gcg'xqsrro'ip

AGUÍ

qsojs :AOUI

oufpj

AOUI

AOUI

AOUI

:oA\sdd

TAVSd

qsojs[A\sd ps^o'tp

8*xo

p oidiuijí ,0/XG

spS9

AOUI

AOUI

AOUI

dodqsnd

qsnd :Msdui

GUG;UOAÍ

AOUIAOUIAOUIdod

A\SOJSSqox

OS-H • H Diimsvo

Page 74: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHXULO K - ERO486.ASM I I - 51

jncmov

ppsvva: slosbmovreíreíjncmov

ppswp: stosbmovreíre]jncmov

ppswc: slosbpopmovmovmovvntretn

mmem:

ppswaax,T

;Aax-,'0'bx,lbx,lppswpax,T

;Pax3'Q'bx,lbx,.lppswcax,T

;Gesax,ds ; Ventana Pswbx, offset vpswsijOfísetpswl,a,

mmemx:

mmeml: mov di,offse1 .memlmov dx,dspush espush dspopmovm ovmovmovxchgmov

esex 52

;cls=es

si,axeax,xxxxsegax,dxds,dx

mmemll: movswdec excmp ex, Ojne mmemllxchg ax,d\mov ds,dxpop esmov ax,ds ¡ventana Opcmemlm ov bx, oJís e 1: vopm .1m ov si, offset mem o 1vnt 'a'

Page 75: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO X - FRO4SC.ASM: 11 - 52

mstk:

pstkl:

pstk2:

mexpc:

movmovmovvntmovmovmovvntretn

pushmovmovmovmovmovmovmovxchgmovsubaddloopmovmovmovxchgmovsubaddlooppopmovmovmovvntretnmov

movpushpushmovhexascmovxchg.

ax,ds ¡ventana Hexmembx, offset vhmsi, offset meml'h'ax,ds ¡ventana AscmerabXjOffsetvamsi, offset meml'a'

esex, 4 ¡preparo buffer STCKsi, 14 ¡segunda columna.bx, offset stckdi,0ebp,regspes,regssax,es:[bp-Hli]al,ah[bx+si],axsi, 4di}2pstklex, 5 ¡primera columnasi, 16ax,es:[bp+di]al,ah[bx+si],axsi, 4di,2pstk2esax,ds ¡Ventana StackbXjOffsetvstksis offset stck'h'

bXjTegcs ¡pongo en EXPCOD los valores de Cs e Ipdi3offset expcodbx ¡reges a la pilabxal:bh

ax5bxaljflh

nush es

Page 76: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - MMM86.ASM H-53

dses

push

popstosw

POP

popmov"h ex asemov ax,hxxchu; al,ah

esbxa!3bl

nush

cod2:

esdses

esebx,regipbxbxa!3bh

ax,bxal,ah

esdses

esbx

popstoswpopmovpushpushmovhexascmovxchgpushpushpopstoswpoppopmov al,blhexascmov ax,bxxchg al ihpushpushpopstoswPOPmovmovmovaddcal]movcmpJeaddcali

;regip a la pila

esdses

¿valores de Cs e Tp almacenadosescount,14bXjOffsel'códigosi,offset codhexbx,4

codOOedx,regipax,dxcodObx558 ;60

codOO

Page 77: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

a-54CAPmiLO H - PSO4S6.ASM

codO:

codeírcodl:

cod5:

codSl:

dec countjz coderrjmp cod2add bx,58 ;60'mov sijOffset codhex2cali codOOsub ax,codhexcmp ax,14ja coderrjmp codl: mov ax,14mov cx,axmov ax5@data ;p<mov es;axmov dijoffset expcod-Hpop si ;spop ds ;push exmovsb :dec dimov bl,byte ptr es;[di]mov a!3blhexascmov ax,bxxchg al,ahpush dspush espop dsstoswpop dsdec exjnz cod5pop axmov cXj28sxib cx,axmov al/ 'push dspiish espop dsstosb

loop codSlpop dsmov ax,@datamov cJs;axmov eSjVideosegmov bxs offset vexpcmov ax.ds

;paso 14 bytes de código a EXPCOD-t-4;es=@datat

;si=regip;ds~regcs

;ds;si —> es:di

;lleno con blancos lo restante

;(cs;ip —> @data:offset expcod+4)

;presenTo venííma

Page 78: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - FR04S6.ASM I I - 55

rnov si, offset expcodvnt 'a'retn

codOO: mov al^bx] ¿conversión del ascii a hexadecimalcali rgd03mov el, 4shl dh,cl ;dh contiene ubicación en gdtab del ascii

movmovcaliaddmovcalimovshlmovmovcaliaddmovretn

,rgd03

a!3[bx+2]rgdGScl,4dh,cl[si],dh

rgd03[si],dbax,[si]

;MSB Iransfoirnado^convierto LSB

;[si] = ascii convenido en he.xadecimal

preopc: movmovmovpushpusbpoprep

POPC2; movmovmovmovmov

popelJ; movmovhexascmovxchgstosvvmovmovhexascmovxcbgstosw

ex, 104 jpreparo buffer MEMO1di,offset memol ;en base a OPCS.EG, OPCOKF,al,1 ' ;XXXXSHG yXXXXOKF.esdsesstosb ¿primero borro MEMO2

dijOffsetmemo.l. ¿escribo MEMOJ.ebx,XXXXSEG ¿segmentoedx,XXXXOEF ¿offsetcx313^P5bx ¿guardo BX.bx,bp ¿escribo direccionesaljbh ;de la primera ventana.

alsah

bx,bpal,bl

ax,bx

Page 79: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAEHULO K - PRO486.ASM tí-56

rdp:

mov al,dhhexascmov ax,bxxchg ;il,ahsloswmov al, dihexascmov ax,bxxchg al,ahstoswadd dx,8loop popclJpop es

reta.

;Correun paso del programacmp error, Ojne íinrdpcmp siarchjO ;híi:y archivo para depurar?jne pasar ;si, procedermov bx5offset vnoarchivovnt 'a' ¿ventana de error de archivo no presentemov ah,0int • .16hcali pdebugjmp salida ;no} tenninar

pasar:usrpromov word pír xferaddr, offsetmov word ptr xferaddr-K2,cspush toggsubpush sipush dspush axmov Ksi,Reg7pmov ds,RegCsmov a!,[si]cmp al,0cdhpop axpop dspop sijne Nolníenippush dspush simov esi,regipmov ds,regcsmov al,[si+l]

;nointenipcion

;DS;ST - apuntador a la instrucción

;es una TNT?

Page 80: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - ERCWS6.ASM H - 57

pop sipop dspush eaxcmp aJ,]Objtie int21?mov eax,regaxcmp ah,00jne .in!21?usrpromovvntmovintusrproPOPpop

jmpint217: pop

movNolnlerup:

cmp toggsub,0pop toggsubjeJ^P

bXj offset video'a1

ah,GO16h

eaxtoggsubyalyeaxtoggsub, 1

:fin alizar

¿ingreso a subnitinas,reps,]oops?

rdp2: jmp

rdp2expasoexuniq

;no

YaEj: mov ax,@datamov ds,axmov es,videosegusrpro

finrdp:mov visib]e,0mmueslra ].,visiblesratonpresentecali erroricjmp salida

eiTonc:cmp error, 1jne nointemov bx5offi>et vinstjmp shoit mostrare

noiníe:cmp error, 2jne noerrorcm ov bx, offset ve op

mostrare:vnt 'a'geíchargefchar

Page 81: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITIILO K - FRO486.ASMH - 58

no errare:caliretn

modvid:movinfcmpjemovmovintmovmov

pushamovint

popadecjnzmovmovint

bien vid:retn.

rdc:movcmpjnecmpjnemovvntmovintcalimovjmp

correr:limplnlimplnmovmovcmpje

pdebxig

ah,0fhlOhal,videomodbien vidaljVideomodah,0lOhcl,24dl,0ah

ah,2 ;Uso rutina del DOS para escribir DL21h

el ;cursor al fin de pantallai_lz30,02dx, ,1200hlOh

errorcjjOffherroi^O ;está activado el indicador de error?rdcfsiarch}0 ;hay archivo para depurar?correr ;sibx, offset vnoarchivo'a' ;ventana de eiror de archivo no presenteah,016hpdebugerrorcjjQ

salida ;no. tenninar;Coire hasta la ocurrencia de un evento

23,revers24, normalword ptr xferaddr, offset YaEJHasWord ptrxferaddr-í-2,csloggcorrejO ^Hasta dirección?rdcd

Page 82: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAFmJLO H - PRO4Slíj\SM: 1.1 - 59

rdcd:jmpmovmovxchgpushhexasepopxchg

rdccax,RegCs ;Corrida hasta cierto puntoword ptr dhexl+6,axa1,ah ¡Hago que CS usuario sea seg. preclef.ax ;para lo que simulo condiciones

axbl.bbword ptr dhexl+23bxbufcorr,bx.a1,ah

movrnovmovh.exascxchg bl,bh

wordbufccbyte *bx,offset vhas ¡ventana para recibir datos (CORRE HASTA

¡CIERTA DIRECCIÓN)

movmovmov

rdcd} : movmovmovvntprintmovcmp

Je

movmovmovjmp

rdcdll: caligetdata

calimovmovcalimovcmpjecmpjnecalijmp

rclcdl2; cmpjne

rdcd2: movrdcd21:call

wordptr dhe;bufcon-f2,bxbyte ptr dhexbx, offset vhaíax,ds ¡'si, offset bufcc'a'1,23,12300,1^gdreset,!byte p ir bufccrdcdllax,' 'bufcorr,axbufcorr4-2,ax

,rdcd2rdcdO ;T10,20}dnex1sTfuncionesa1,atrprev ;di,dirprevrdcd03gdreset,0gccod,0rdcd2gccod,?rdcd 12funcionesrdcfgccod,5

rdcdllgdresel,!rdcdOO :

¡resalto campo de segmento1 ¡recibo segmento

¡quito resaltado

¡dato valido?

¡ESC para abortar

¡TAB para pasar

¡resalto campo de offsetgetdata 17520)dhex23'h! ¡recibo offsetcali funciones

O

Page 83: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H: - ERQ486.Asivr H. - 60

mov aljatrprev ¿quito resaltadomov dijdirprevcali rdcdOlmov gdreset50cmp gccod,0 ;dato valido?je rdcd3cmp gccod, 7 ¿ESC para abortarjne rdcd22cali funcionesjmp rdcf

rdcd22: cmp gccod,5 ;TAB para pasarjne rdcd2.1jmp rdcdl

rdcd3: usrpro ¿Pantalla de usuario<~>PROmov bx,word. ptr dhex2-t-6mov word ptr pointerlst,bxmov ax,word ptr dbexl+6mov word ptr potnlerlst+2,axjmp exbasta

rdcc: mov bx,o(Tsetvcond ;ventana con las condicionesvnt 'a1

print l,23,123ccjreversmov nlinea,0 ;para cada linea...

rdccl: cali rdccO ;resalto linea actualge tenarmov al,atrprev jquito el resaltadomov dijdirprevcali rdccOlcmp gccod, 1 ;ENTER?je rdcc2cmp gccod,4 ;ESC?jne rdcc]. 2cali funcionesjmp rdcf ¿abortar

rdcc!2: cmp gccod,5 ¿especial?jne rdcclcmp gcascü,72 ;si, arriba?jne rdccl, 3clec nlínea ;sicmp nlineajOffhjne rdcclmov nlinea,2jmp rdccl

rdccl.3: cmp gcascii,80 ¿abajo?jne rdcclinc nlinea ;sicmp nlinea,3

Page 84: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - rRO486-ASa[ H-61

jne rdcc.1mov nlineíijmp rdccl

rdcc2: calicali

¡restauro pañi alia

¡condición de bandera?

;ESC?

;recibi un reg?

mexpcmstk

cmp nJinea,2jne rdcc21jmp rdcc5

rdcc21: mov bx, offset vrv ¡ventana para condiciónvnt 'a1

limpln 23}revers ¡registro - o o xxxxprint l)23,123rcinp,revei'smov iguaB-4,—'cmp nlinea,0 ¡igualdad?je rdcc22mov igual+4,Qd8h ¡no, desigualdad

rdcc22: print 9,20,igual)normalmov gdreset,!

rdcc221 :geíline 9,20,nomregmov gdresetjGcmp gccodj4jne rdcc23cali funcionesjmp rdcf

rdcc23: cmp gccod,!jne rdcc221mov si,offset nomreg+2 ;si recibí, es reg. normal?mov cljO ¡en CL enviare una banderacali EncRegjne rdcc25mov cl,lcali EncSregmov cl5ljne rdcc25limpln 23sreversprint 1,2getcharmov ax,geíwordcmp ¡11,27 ¡ESC?je rdcc24jmp rdcc21

rdcc24:jinp rdcfrdcc25: ¡aquí ya 1engo el registro, ahora recibo el valor

push exmov aux^axlimpln 23:reversprint 1,23,123 cmpr,revers

;no, es de segmento?

;no, en-or

Page 85: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - ERO4S6.ASM H - 62

mov gdreset,!,rdcc26: cal! rdcc260 ¡resalto el campo

pop excmp cí,0 ¡registro normal?jne rdcc261test byteptraux3.18h ¡si, 8 o 16 bits?jnz rdcc2ólgetdala .H^dbyte/b1 ;8 bitsjmp rdcc262

rdcc26Í:test byíe ptr aux,16jnz ruplj

getdata IS^O/lhex^'h1 ;16 bitsjmp rdcc262

ruplj: mov cua12,lgetdata LS^dhexle/h1 ;32bils

rdcc262:mov gdreset,0cmp gccod,7 ;ESC?jne rdcc27jmp rdcf ;si,salgo

rdcc27: cmp gccod^O ;tengo dalo?jne rdcc26jnov ah,0 ;si, preparo llamada a ExConclcmp d}0 ¡registro normal?je rdcc28

mov ah,80h ;no, de segm., bit 4 de AH = .1rdcc28: mov al,byte ptr aux

add ah,alcmp cI30 ;reg. normal?jne rdcc281test byte ptr aux,18h ;si, de 8 o 16 bits?jnz rdcc281.mov bl,dbyte44- ;8 bitsmov bh,0jmp rdcc282

rdcc281:test byte ptr aux, 16jnz rdcc28.1jmov bx,\vord ptr dhesl+6 ;16 bitsjmp rdcc282

rdcc281j:mov ebx,dword ptr dhexlE+10 ;32 bits

rdcc282:pushadusrpro ¡Pantalla de usuario<~>PROpopadcmp nlinea,0 ¡igualdad?

Page 86: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PR04S6.ASM H - 6 3

¡ENTER?

¡ESC?

je rdccSjmp rdcc4

rdcc3; mov al,O ¡registro = xxxxjmp exconcl

rdcc4: mov al,l ¡registro o xxxxjmp excond

rdcc5: mov bx,offset vcban ¡condición de banderasvnt 'a'mov nlinea50 ¡para cada linea...

rdccSJ; cali rdcc50 ¡resalto opción actualgetcharmov a],aírprev ¡quito resaltadomov di,dirprevcali rdccSOlcmp gccod, Ije rdcc6cmp gccod, 4jne rdccSScali funcionesjmp rdcf

rdcc53: cmp gccod,5 ¡especial?jne rdcc5cmp gcascii,72 ¿arriba?jne rdcc54dec nlinea ¡sicmp nlinea, Offhjne rdcc5.1mov nlinea,15jmp rdccSl

rdcc54: cmp gcascii,80 ¡abajo?jne rdccSinc nlineacmp n]inea5.1.6jne rdcc51mov nlinea.Ojmp rdcc51

rdcc6:usrpromov al,2mov ah,nlineajmp excond

YalijHas:mov ax,@dati

¡Pantalla de usuario<™>PRO¡ya tengo la condición

rdcf:

mov ds,axmov es,videosegusrpro ¡1

cali pdebug

de ojsuario<—>PRO

Page 87: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTULO K - ERO486AS61 I í - 64

cali modvidcali funcionesmov sijOffsetlOicali mlinOcali eiToricmreseteo varraton]mov visible,0mmuestra l,visible,mov errorcj,0jmp salida

rdcdO: posdir 1,0,20rdcdOa: mov di,pddir

inc dimov ah,es:[di]mov atrprev,ahmov dirprev,dimov al,70h

rdcdOl: mov ex,4rdcd02: síosb

inc diloop rdcd02retn

rdcdOO: posdir 17,20jmp rdcdOa

rclccO; mov el,7mov ch,nlineíiadd ch,18posdir cl,chmov di,pdclir

i ;preparo y muestro linea O

,visible,ratonpresente

incmovmovmovmov

rdccOl; movjmp

rdcc50: movmovaddposdirmovincmovmovmovmov

rdcc501:mov

diah,es;[di]atrprev,ahdirprev,dial,7Qhex, 17rdcd0201,19ch,nlineach,6cl,chdi,pddirdiah,es:[di]atrprev,ahtliipreVjdial,70hcx,15

;r,esalto campo de segmento

;calculo posición;aíributo en ese lugar

:i-everso

;resalto campo de offset;aqui incluido el RETN

^resalto uno de los tres casos;simiJar a rdcdO

;aqui ya se hace el RETN;resalto una de las 16 opciones

a

Page 88: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO Jí - PRO486-ASS.r I f - 65

jmp rdcd02 ;aqui ya se hace el RTZTNrdcc260:posdir 15,20 ^resalto campo de dirección

mov di,pddirinc dimov alj70hmov ex, 8

rdcd02j:stosbinc diloop rdcdOZjretn

rdj; ;ejecuta hasta niptura o fina!mov errorcj,0:ñhcmp error., Ojne finejeccmp siarch,0 ;hay archivo para depurar?jne ejecutar ;simov bx, offset vnoarchivovnt 'a' ;ventana de error de archivo no presentemov ah,0inl~ 16h

cali pclebugmov errorcj,0jmp salida

ejecutar:usrpromov aXj offset rdjlm ov worcl ptr XferAddr, axm ov word ptr XferA ddr+2, esjmp ExTotal

rdjl: mov ax}@datamov ds,axmov es,videosegcali modvidusrpro

finejec:mov si,offset lOini ;preparo y muestro linea Ocali mlinOcali funcionescali erroricmreseteo van-atonl}visible,ratonpresentemov visible,0mmuestra l,visib]e,ratonpresentemov eirorcjjOjmp salida

rdra: ;activo/desacíivo bkptmov brup,l ;bandera BRUP=1 para activar/desactivar.

Page 89: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H - ERCMS<;,ASM: H-66

rdrc:jmprnovjmp

rdrb: rnovrdrbl: mov

rdrblbrup}2rdrblbrup,3rupact3023,revers

limpln 24,normal.prínt l^S^Sbkpjrevers

bx,o£fsetvrnoTn ;ventana para nombreax,ds

;crear brkpt, BRUP-2

;borro brkpt, BRUP-3;recibo nombre del Brkpt;RUPACT^ruptura actual-1

a

movmovmovvntmov gdreset,!

i-dblla:call rdrOrdbll: geíline 12J19,nombrk

mov gdreset,Gcmp gccod,4 ;

rdb.12

;muestra ventana de bkpts;recibo nombre del brkpt

rdbl2:

rclblS:

rdbl.32

rdbU:

jmpcmp

jnecmpjnejmpcmpjnecmpjecmpjnecmpjaaddmovmovmuíaddmovcmpjnesubjmp: cmpjbsubjmpmov

nlrbUgccod, 1rdb!3

;vale?

bjte pírnombrk[l]J0 ;si, pero esta vacio?rdbl.4rdrbflgccocíjSrdbllgcasci'1,73rdb!32gcasciis81rdbllmpací,247rdbllrupací,8al, 16cl,rupactel

:si, termino; especial?

;PGUP?

;PGDN?;no vale

;PGDN

aXj offset TablaBrksi,axbyte ptr [si]rdbllanipact,8rdbllnipact58rdbll

rupac1,8rdbllacl,l

;PGUP

;acceso a bkpts solo por noml

Page 90: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTULO H - ER04S6.ASM H - 67

rdrb2:

rdrb21

rdrbS:

mov si,offset nombrk+2roov al,bnipcmp al,l ; activo/desactivo brkpf?jne rdrbScali TogBrkPt ;si toggleje rdrb21cali rdrOcal! pdebugcali rdrOjrnp rdra ;rdrbf!.: limpln 23,reyersprint Is23,noesbrk,reversgeícharcali rdrOcali pdebugcali rdrOjmp rdra ;rdrbfcrap al,2 ;creo brkpt?je rdrb31jmp rdrb4

rdrbSl: limpln 23jreyersmov ax,RegCs

;ltmpio lineas 23 y 24;bkpt en cierto punto

rupl

mov word ptr dhexl-H>5axxchg al,ah ;Hago que CS usuario sea seg. predef.push ax ;para lo que simulohexascpop axxchg bl,bhmov word ptr dhexl+2,bxmov bufcorr5bxmov al,ah.hexascxchg blsbhmov word pír dhexl-t-45bxmov bufcorr+2.bxm ov b>te ptr dh ex 1+ 1 3 4

condiciones

mov bx, offset vrdir ;ventana para recibir direcciónmoy aXjdsm ov si, offset bufcorrvnt 'a'print l^j^cd^reversmov gdreset,!cmp by\Q ptr bufcorr, '_'je rupllmov ax,' 'mov bufcorr, axinoy bufcorr+23ax

Page 91: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - H-70

;mueslro segmento

mov byteptr[di+2],'*'rdr021: mov ax,ds:[si+bp+2] ;copio 10 bytes del nombre

mov [di-t-3],axmov ax3ds:[si+bp-¡-4]mov [di+5],axmov aXjds:[si+bp+6]mov [di-í-7],axmov ax,ds:[sHbp4-8]mov [di+9],axmov ax,ds:[si+bp-KÍO]mov [di+ll],axmov al,ds:[sí+bp-H5]hexascxchg bl,bhmov [di-f-13]3bxmov al,ds:[si+bp+14]hexascxchg b],bhmov [di+15],bxmov a],ds:[si+bp+13]hexascxchg bljbhmov [di-í-17].bxmov al,ds:[si+bp4-J.2]hexascxchg bl:bhmov [di-H9],bxinc nlineainc diadd di,21cmp nlinea, 8je rdrOScmp di, Oje rdr03jmp rdrOl

rdrOS; mov bx.ofísetvrup ¡muestro la ventanamov ax,dsmov si,ofFset bufnipvnt 'a1

retn

¡muestro offset

¡veo si termine la ventana

¡llego a ultima linea?

¡ultima ruptura?

rdnn; ¡muestra ventana de bkplsmov rupactjOlimpln 23,reverslimpln 24jnormalprinl: l^S

rdrmllaxall rdrO ¡muestra ventana de bkpls

Page 92: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO ir - FBO4S6.ASM: 1 1 - 7 1

rdrmll: getehar ¡recibo orden de] tecladocmpjnecalijmp

rdrm!2; cmpjne

rdrmlS: cmpjecmpjnecmp

jaaddmovmovmuíaddmovcmpjnesubjmp

rdrml32:cmpjbsubjmp

rdrmf: cali

rdi:

rdil:

rdi2;

caUcalijmp

limplnlimplnprintmov

geílinemovcmpjnejmpcmpjnemovmovmovmov

gccod, 4rdrml 2funcionesrdrmf

gccod; 5rdrml 1gcascii,73

rdrrnl32gcascii,81rdrmllrunact,247rdrmllni pací; 8al, 16cl,rupactel

¡ESC?

¡especial?

¡PGUP?

¡PGDN?¡no vale¡PGDN

aXjOffset TablaBrksi,axbyteptr [sij.Ordrml lanipact8rdrmll

rupact,8rdrmllnipact,8rdrml lammemmregrnpswsalida

23,revers24,nonn¡ilIjSSjinstruCjregclreset, 1l)243insbxiffgdresetjOgccod, 4rdi2

¡PGUP

¡restauro pantalla

;vers

¡recibo nemotecnico

rdif ;ESCgccodj 1rdilbl,insbnff+lbh,0

¡ENTER, dato valido

si, offset insbuff-i-2byteptr[bx+si],0

Page 93: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - II - 72

mov word ptr XferAddr,offset rdi3 ¡dirección de retornomov word ptr XferAddr-J-2,cscali juncionesjmp Exlns ¡ejecuto

rdi3: mov ax,@datamov ds,axmov eSjVideosegjnc rdi4limpln 235revers ¡nemotecnico incorrectoprint l.,23)errens,1reversjmp rdif

rdi4: cali pclebng ¡todo bienHmpln 23,reversprint l,235]isto,revers

rdif: getcharcali tincionesjmp salida

rdeb: ¡ensambla y busca en e] segmento de códigolimpln 0,reverslimpln l,reversprint 10,0, ens wl 3reversprint 10,1 s ensw2,reverslimpln 23,reverslimpln 24,nomialprint l,23,ensbusc,revers ¡indicacionesmov gdreset,.!

rcleba: limpln 24,normalrdebal: getline T,24,insbufF

mov gdresetjOcmp gccod,4jne rdeba2cali funcionesjmp rdebf

rdeba2: cmp gccod,!jne rdeba]mov bl5insbnff[l]cmp bl,0jne rdebaSjmp rdebf

rdeba3:xor bh,bhmov si, offset insbufF+2mov byte ptr [si+bx]sO ¡termino bnfíér con Omov bx,esmov ax,dsmov es,ax

¡recibo nemolecnico

¡ESC?

¡Vale?

¡BX = # de caracteres

Page 94: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PRO436J\S\ H - 73

rdebx:

rdebxl

mov di.oñseí: frisEnscali assemmov es3bxjnc rdebxlimpln 23,reversprint 1,23, erren s,reversgetcharjmp rdebfpush Reglp

bx,cx ;busco en el códigoes,RegCs jLiicio de b\isqueda

Edi,RegIp ;en CS:1P del usuario.si,offseí:InsEnscx.OfESh.

mov.: movmovmovmovcali buscarcmp cx30jne rdeblpop RegTpmov es,videoseglimpln 23,reversprint 1,23,NoEnsIgetcharjmp rdebf

rdebl: mov es,videoseglimpln 23,reversmov offcod5dipush bxpush dicali mcod

di

;CX~0 si no encontró

;no encontró

;si encontró,

popPopprint

bxl,235sigo?,revers ;busco próxima?

rdebl I; getcharmov ax,getwordcmp al,l.bhjne rdeb2jmp rdeb3

rdeb2: cmp a1,0dhjne rdebl1inc di jENTERj sigo buscandomov RegTp,Edijmp rdebxl

rdebS: pop Regíprdebf: mov si,offset lOini ;preparo y muestro linea O

cali mlinOlimpln 23,normalprint 0,23,Uini,bmenu

Page 95: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAFTniLO 1E - PRO4S6.ASM: H - 7 4

rinifS: cali pdebugcali, funcionesjmp salida

jactuaHzo pantalla

rclml:

rdmll

;lleno un área de memorialimpln 23,reverslimpln 243normalmov bx, offset vil ¡ventana para pedir datosmov ~"xchgmovmovxchgmovmovmovvntprintmovcali

eax,autooffal,ahbufml+2,axeax,autosegal,abbufrnl,axax,dssi, offset bufml

l,23,bytes?,revers

rdm32:

gdresel,rdmlQ

getdata 20,1mov gdreset,0mov al,atrprevmov di,dir])revcali rdm.101cmp gccocí,7jne rdm!2jmp rdmlf ;ESCcmp gccod,0jne rdmll.limpln 23,reversprin t 1 ,23^1 lor?3revei-s

;recibo # de byíes;resalto campo de #bytes

mov gdreset,]rdm!3: cali rdmlOO

getdata 22,1mov gdreset, Omov al,atrprevmov dijdirprevcal] rdmlOOlcmp gccod,7je rdmlfcmp gccod,0jne rdml3

rdmH; push esmov es,autoseg •mov edi,avitoofj" ;dirlmov cx.word plr dhexl+6

;aquiya hay el #bytes en DKEXJ.+6

;ESC

;aqui ya tengo el valor

;ES:DT apunta al inicio del área

Page 96: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PRO436-ASM H - 7 5

mov al,dbyte+4cali llenarpop eslimpln. 23,reversprinl .1,23cali pdebuggetcharjmp rdmlfl

rdmlf; cali pdebugrdmlfl: cali funciones

jmp salidardmlO: posdir 20,18

mov dijpddirinc dimov al,es:[di]mov alrprev,almov dirprev,clímov al,70h

rdmJOlrmov cxs4rdm!02: stosb

inc diloop rdml02reín

rclinlOO: posdir 22,19mov di,pddirinc dimov al,es:[di]mov atrprev}almov dirprev,dimov al,70h

rdml001:mov cx,2jmp rdml02

rdmb:

;31eno el área con e] valor de AL

¡resalto campo de #bytes

;esto incluye el relnjbusca un string en segmento actual

Jimpln 23}reversHmpln 24,nonna]prínl l,23,buscasc?,revers

rdmb].: getchar ¡espero respuesta H3 A o ESCmov aXjgetword

al.lbhrdmb!2

cmpjnejmp rdmbf2

rdmb!2: cmp al,VVje rdmb2cmp alj'a1

je rdmb2cmp alj'H1

;ESC

Page 97: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PRO4SfiJ\SM H - 7 6

je rdmblScmp al/h1

jne rdmbl ¡respuesta incorrectardmblS: jmp rdmb4rdmb2: mov gdreset',1 ¡SecuenciaenASC.il

limpln 23,reversprint l,23jbiisca?,revers

rdmb21: geíline l,24,insbuff ¡leo secuenciamov gdresel',0cmp gccod, 4jne rdmb22jmp rdmbf2 ¡ESC

rdmb22: cmp gccod,!jne rdmb21mov bl,insbuff-H ¡vale, pero si esta vacio salgocmp b!50jne rdmb23jmp rclmbf2

rdmb23: mov bh,0 ¡preparo BX para llamar a rutina de búsquedajmp rdmb6

rdmb4: limpln 23,revers ¡Secuencia en HEXprint 1,23,busca ?5reversmov bx,0

rdmb41: mov cl,blmov al,3muí elinc almov cl,almov gdreset,!

rclmb42: cali rdmbO ¡resalto sitio actualgetdata el, 24 11; ,'IVmov gdreset, Omov al,atrprev ¡quito resaltadomov clijdirprevcali rdmbOlcmp gccod,?

rdmb43rclmbS ¡ESC

rdmb43; cmp gccod,0jne rdmb42cmp cíbyte+1,0 ¡O datos?je rdmb5 ¡si, pasar a buscarmov si,offeetinsbuff-i-2 ;vale,guardo en TNSBTJFF+2mov al,dby1e+4mov [si-Hbx]3alinc blcmp bl,24

Page 98: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO II - H - 77

jnerdmbS: cmp

jnejmp

rdmb41bl,0rdmbSI

rdmbf2rdmb5]:mov insbuff-Hl,blrdmb6: mov cx,0fíífh ;preparo llamada

mov bljinsbiiff-Mmov bhjOmov sijOÍfset insbufF-K2piish eaxmov eax,autosegmov esaaxpop eaxmov edi,autoo:ffcali buscarpush eaxmov ax,esmov autosegjCaxmov dhexseg,eaxmov xxxxseg,eax

. pop eaxmov autoo£f,edimov dhexoff,edimov xxxxoff,edimov es,videosegcmp cx,0

rclmb?neUmpln 23,reverspiintincincinccalJcalijmp

rdmbT: calicali

;CX=0 si no encontró

;no encontró

autooffdhexoffxxxxoffpreopcmmemrdmbfpreopc ¡encontró, muestro en ventanammem

limptn 23,reversprínt l,23ssigo?srevcrs jbusco próxima?

rdmb72: gelcharaXjgeíwordal,lbhrdmbJG ;ESC, salgoal,0dhrclmb?2antooíf

movcmpjecmpjneincinc dhexofF

Page 99: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - 5RO486.AS&r -78

;enter, busco otra vez

^resalto campo para byte actual

inc xxxxoffjmp rdmb<$

rdmbf: getcharrdmbfi: cali funciones

jmp salidardmbO: posdir cl.,24

mov di,pddirinc dimov al,es:[di]mov atrprev,almov dirpreVjdimov al,70h

rdmbOl; stosbinc distosbretn

rdmc: ;copia desde la ventana principal a otra árealimpln 233revers ;limpio lineas 23 y 24limpln 24,norrnalmov eax,auíooffxchg al,ahmov bufml+2,axmoA^ eax, autos egxchg al,ahmov bufml,axmov eax. autosegmov word ptr dhexl+6,axxchg al,ah ;Hago que DS usuario sea seg. predef.push ax ;para lo que simulo condicionesmov bufml+4,axhexascpop ax

rdmcl

xchgmovmovmovhexascxchgmovmovmovmovmovmovvntprint

bl,bhword ptr dhexl.+2,bxbufcorr5bx

bl,bhword ptr dhexl-M-;bxbufcorr+2jbxbyte ptr dhexln-l ,4bXj offset vcopia ;ventana para recibir direcciónax3dssi, offset bufml'h'l}23J23cd,revers

mov gdreset,].

Page 100: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAP1TIKD HT - ER04SSASM: H - 7 9

byte ptr bufcorr,'JrdmclOax/ _ 'bufcorrsaxbufcorr-l-2,ax:ax0

cmpjemovmovmovmovmovjmp rdmc2

rdmclO; print 15,18,rdmcll: cal) rdmcO

getdata 15,183dhexl,'h' ;recibo segmentomov al,atrprev ;cjuito resaltadomov di3dirprevcali rdmcOl

;resa1to campo de segmento

movcmpJe

cmpjne

jmprdmc!2; cmp

jnerdmc2: movrdmc21: cali

getdatamovmovcalimovcmpjecmpjneJmp

rdmc22: cmpjne

gcireset,Ugccod, 0rdmc2gccod,7rdmcl.2rdmcf

gccod, 5rdmcllgdreset, 1

rdmcOO20,18,dhex2al,atrprevdi,dirprevrdmcOlgdreset, 0gccod, 0rdmc3gccod, 7rdmc22rdmcfgccod, 5rdmc21

;dato valido?

;ESC para abortar

;TAB para pasar

;resa)to campo cíe offset,'h' ;recibo offset;quito resaltado

;dato valido?

;ESC para abortar

;TAB para pasar

rdmclrdmc3: print l,23)bytes?,revers ;recibo el # de bytes

mov bp,word ptr dhexl^-6 ;libero dhexlmov gdreset,!cali rdmc30 ;resalto campo de #bytes

rdmcSl: getdata 20J19,dhexl)Ih!

mov gdreset, Ocmp gccod,?

rdmcfgccod, O

ecmpjne rdmc3)

;ESC

;no vale

Page 101: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTULO H - ERO4S6.ASM H-80

rdmc4; movmovmovmovmovcalimovmovmov

eSjbp ;aqui tengo todo listo, copiodi,word ptr dhex2+6 ;ES:DI~>desíÍTiocXjWordptr dhexl-HS ;#byfesesi,axitooff

;dirl+2 ;DS;SI->origends,autosegcopiarax,@datads,axes,videoseg

limpln 23,reversprint l,23jlisto,reverscali pdebuggetcharjmp rdmcfl

rdmcf: cali pdebugrdmcfl: ca]l funciones

jmp salida

rdmcO: posdir 15,18mov di,pddirinc dimov a!3es;[di]mov atrprev,almov dirpreVjdimov al,70h

rdmcO 1: jmp rdml 01rdmcOO: posclir 20,18

mov di,pddirinc dirnov al,es;[di]mov atrprev5almov dirpreVjdimov al,70hjmp rdmlOl.

rdmc30: posdir 20519mov di,pddirinc dimov al, es: [di]rnov atrprev,almov dirpreVjdimov al}70hjmp rdmlGl

rdfun: cmp otroaux,0jne rdfun 1jmp rdfm

rdfun 1: cmp mopaux,0

;resalto campo de segmento

;Esto incluye el RETN;resalto campo de oífset

;Esto incluye el RETN;resalto campo de #bytes

;Esto inclirye el RETN

;si se dígito ENTER, mostrar funciones

;ASCrT normal si AL=0

Page 102: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PRCUH6.ASM: H - 81

je rdflljmp rdf6

rdfll: cmp mopauxl,59 ;F1?jne rdfl2

cop451: cali rd_ ¡editor en pantallamov B?,0

jmp rdffrdf!2: cmp mopauxl.,60 ¡F2?

jne rdfBjmp rdff

rdf!3: cmp mopauxl,6l ;F3?jne rdfl.4xor 13?, 1 ;complemento variablecmp :f3?,lje cop4-2jmp cop43

cop4-2:cali rdfSmmmuestra 0,visible,ratonpresentemov ax,dsm ov bx, offset vcopOvnt 'a'

mov ax,dsmov bx,ofísetvcopl ¡presento datos pila coprocesadormov si, offset memocoplvnt 'a1

mov ax,dsmov bXjoffset vcop2 ¡presento stat. y cont. del coproc,mov si5offsel memocop2vnt 'a'mmuestra l,visible,raíonpresentestodomov getword,ax ¡espero se presione una teclartodomov nXjgetwordcmp al, 27 ¡esc?je cop40cmp ah,61 ;f3?je cop40cmp ah,59 ¡fl?jne cop44xor Í3?,lcali pdebugjmp cop451 ¡transfiero control a nitina de Fl

cop44: cmp ah}62 ¡f4?jne cop45

Page 103: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - FRCWS6.ASM H - 8 2

¡transfiero control a mtina de F4-;f7?

;lransfiero control a rulina de F7;:f8?

;transfiero conlrol a rutina de F8

;transfiero control a rutina de F9;flO?

¡transfiero control a rutina de FIO

jmp cop461cop45: crnp ah,65

jne cop46jmp cop471

cop46: cmp ah,66jne cop47jmp cop481

cop47: cmp ah,67jne cop49jmp rdfl.9a

cop49: cmp ah,68je rdfajmp rdff

cop40: xor f3?,lcop43: cali pdebug

jmp rdfF

rdf!4: cmp mopaux.1,62 ;F4?jne rdf].5

cop461: usrpro ;Muestro pantalla de usuariordu.1: getchar ¡espero KSC para regresar

mov ax,getwordcmp ah,62 ¡ESC?

je rctfljcmp al, 27jne rdul

rdflj: nsi"pro ¡vuelvo a pantalla de PROjmp rdff

rdfl5: cmp mopauxl,63 ;F5?jne rdfl6xor f5?,lcali pdebug ¡si f5?=l --> debo presentar ventana con

¡instrucciones completas¡si f5?=0s no

NocodE: jmp rclffrclfl6: cmp mopauxl,64 ;F6?

jne rdfl.7stodomov ax,@dafiimov ds,axpush axpush dipush sipush exmov bx, offset vnarchvnl: 'a'mov gdreseljl

Page 104: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PROlS6J\Síir H-83

geíline

movcmp

pushmovmovmovpushpushpopreppoppopmovmovpushpushpopreppop

poppoppopmovmovmovmovmovmovmovmovmovmovmovmovpushmovmovmovincmovintpopmov

cl,0fmf<5exdi, offsel narch

13H, OeH}Narch2;en Narch2

cljbyte ptr narch2+l;se inglesaron parámetros?;nOj terminar

jrecepfar el nombre del archivo a abrir

ex, 40escises

stosbesexsia offset narch2+2di,offset narch ;pasar los parámetros a Narchesdses

movsbesexsidiaxIíXJarnbien.te ;preparar para correr el editorpb.ambiente ].,bxbx, offset narch 1pb.paramaddress,bxpb.paramseg(Tiento,axbx, offset fcbloquelpb.fcbloíísetjbxpb.fcblsegmento,axbXjOÍfsel' fcbloque2pb .fcb2o.rTset, bxpb.fcb2segmento,axbx, offset pbdses,axdi,pb.fcbloffsetsi,pb.ambiente!siax,2901h21hesdiIpb.fcb2offset

Page 105: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHUIILO K - PRO48G-ASM: tí-84

movintpushmovmovmovintmovmovmovintjnccalijmp

ax32901h21hbpvíejospjSpviejoss,ssah562h21hes,bxbx,2QOOhah}4ah21hsimemoriamenserrorbienconido

¡obtener dirección de mi PSP

¡actfrtar la memoria que utilizo¡liberar memoria

í

¡llamar a presentar mensaje de error

simemoria:pushpoprnovmovmovintjnccali

dsesbx,ofísetpb 3

dx,offset nombreax,4bOOh21hbiencorridomenserror

¡ejecutar el editor

¡hubo errores?¡si

biencom'do:movmovpopmov

ss,viejossspjViejospbp

visible, 0

¡restaurar los punteros de pila

mmuestra l,visible,ratonpresente ¡mostrar el puntero del ratón

fn.f<5:

rdl70:

rdft7:

cop47]

movmovmovmovintrtodojmppoppoppoppoprtodocalijmpcmpjne

- : xormov

ah,2bh30dh;24dl,0lOh

rd.170ex

sidiax

pdebugrdffmopaux.1,65rdtlStoggcorre,].al, 6 ¡

¡mover el cursor

;F7?

¡corre hasta dirección/condición.indico en pantalla:

Page 106: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - ERO486.ASM H-85

movmuímovacldm ovmovrnovmovmovmovmovprintjmp

rdf!8: cmpjne

c op 4 8 1 : xormovpushmovmov

; "DireccCondic*

cl,toggcorre ;Direcc o Condicelsi,axs^offset opccorrdi,ofísetIl.íni-f-47ax,[si][di],axax,[si+2]

ax,[si+4]

;F8?

;permite/impide ingreso en;svibmtinas, reps o loops.

;indico en pantalla:

popmuí

si, offset opcpasodis offset llini+55

[di],ax

; 'SINO1

rdffmopauxl,66rdf!9toggsub,!a132axax,toggsubcl}alaxel ; Si o No Subr.

mov si\axaddmovmovmovpríntjrap

rdf!9: cmpjejmp

rclfl9a: mmuestramov bXj offset vf9mov ax^ dsmov si, offset uline2vnt 'a'mmuesíra ].3visible3ratonpresentemov gdreset,] ;recibo un decimal

rdf!91: movgetdatamov gdreset30

gccod,?rdfl.92rdf!9f

rd£L92: cmp gccod,0jne rdf!91

rdffmopauxl.,67rdfl^ardfla

;F9?

cmpjne

Page 107: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTUIO K - PR04S6.ASM H - 86

.posclir 47h,4mov diapddirmov eaXjdword ptr ddec-H.2push axrcr eax,.l6xchg al,ah ;mtiesTro equivalencia hexpush ax ;en la pantallahexascmov es:[di],bh.mov es:[di+2],blpop axmov al,ahhexascmov es;fdi+4],bhmov es:[di+6],blpop axxchg al,ah jrnuestro equivalencia hexpush ax ;en la pantallahexascmov es:fdi+8]3bhmov es;rdi+l,0],blpop axmov al,ahhexascmov es:[di+].2;Lbhmov es;[di+].4],bllimpln 24jnormalgetchar

rclfiaf: cali mregcali mpswjmp rclff

rdfl.a: cmp mopaux.1,68 ;F10?je rdfajmp rclff

rdfa: ;sílimpln 24,norma]mmuestra OjVÍsible^aTonpresentemov bx,ofísetvascl ¡muestro ventana de código ASCffmov ax,dsmov si,offset unovnt 'a'mov bx, offset vasc2vnt 'a'mmuestra 1, vi si ble, ratón presen tegetcharcali pclebugjmp rdff

Page 108: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAMTUtO H - PROISS-ASM H - 87

rdf<5; cmp mopaux,'F ;ASCU normalesje rdfin ;si es F o f muestro explico funcionescmp mopauXjfjne rdff

rdfm; mov bs, offset vfunc ;rnuestro ventanavnt 'a'limpln 24,normalgetcharcali pdebug

rdff: mov mopaux,0mov mopauxl,Qjmp salida

menserror: ¡Muestra mensajes de error que puedan ocurrir al correr;el editor de texto(F6)} SHell, Ayuda (F2) desde el menú¡principal

jnc biencorridoshl al, 1mov si,offset mensajesxor bx,bxmov bl;almov dx,[si+bx]mov ah,9int 21hgetcbarretn

rd_: ;edicion en pantalla.;Qrden en que se atenderá a las ventanas: 1 Registros, 2 Banderas,;3 Código, 4 dirección memoria 1, 5 direcciones memoria2, 6-memorial¡hex, 7 memorial ascii, 8 memoria2 hex, 9 memoria2 ascii.;Se usa para leer ciatos dos rutinas: GETCHAR y GETDATA, que al salir;dan códigos sobre la forma en que se produjo la salida. En esta;parte clel programa el usuario tendrá opciones generales como:; TAB pasa a próxima ventana.; SPBFT TAB pasa a ventana anterior.; ESC sale del editor al menú.;Existen opciones aplicables de forma diferente en cada rutina.

rcL_3-: ¡Cambios en ventana que muestra registros.;Usar Flechas para moverse o para no alterar un registro.mov vent, Imov venlacíual,0mov dl,0 ;reg. actual = BPmov cual, 1mov gdresetjlmov sijOffsetlOreg ;UNEAO

Page 109: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PROOS6J\SA[ I I - 88

cali mlinOlimpJn J,reverslimpln 23,reverslimpln 24,norma]print 15,1,1 ].reg}revers

;b"jieas .1, 23 y 24

prinl 3,235123d_,reversprint 3,24,124d_JTiormal

rd_a:push f5?mov £57,0cali code?pop f5?mov bx. offset vr ;veu_tana para cambiosmov ax3dsmov si, ofíset ulin evnt 'a'

rd_JU: cali rcMO presaltareg. actualcmp cualjOjNe rd_lllpush axpush bxpush sipush dxmov si, 2mov dh,4mov bx,ofíset dhexlmov a],'0'

RD_01 1 ; mov [bx+srj,alinc sidec dhjnz rdJXUmov [bx+l],0pop dxpop sipop bxpop ax

rd_b: mov bXjOffsetvr ;veníana para cambiosmov aXjdsmov sijOffset ulincvnt 'a'

getdata 15H,OeH}dhex.1 ;(1 5H,OeH si enjmp rd_112

rd__ll] : push axpush bxpush sipush dxmov si}2

screen)

Page 110: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRO4S6.ASM: H - 89

mov db,8mov bx,offset dbexlEmov al,'O'

RD_001: mov [bx+si],alinc sidec dbjnz rd_001mov [bx+13,0pop dxpop sipop bxpop ax

rd_C: mov bx,offset vrmov ax,dsmov si,offset ulinevnt 'a'geídata ilHjOEH.dbexlE/h'

rd_112: mov a1,atrprevmov di,dirprev

gdreset,0rd_102gccod,5rd_12gccod,8

;ventana para cambios

movcalicmpjbcmpjaejmp

rd_12: cmpjne

rd-J,21:mccmpjnemov

rd_122: jmprd_13: cmp

jnedeccmpjnemov

rd_131: jmp

rd__14: cmpjnecmpjbsubjmp

gccod,2rd_13di

;ABAJO?

¡siguiente registro;16 registros

rd_llgccod,!rd_14didl,0ffli

dÜ5rd_ll

gccod,4rd_15di, 12rdj.41dl,2

rd 142

;registro anterior

Page 111: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - FRO-iaS-ASM H. - 90

rd_141: cmp dl,<5jb rdJ411sub di, 6jmp rd_142

rd_1411;cmp

add di, 10jmp re

add dLÓjmp rd_142

rcl_142:jmp rd_llrd_15: cmp gccod,3 ; >?

jne rd_16cmp di, 12jnb rd_151cmp di, 6jnb rd_11501add dl,6jmp rd_152

rd_11501:cmp di, 10jb rd_11502add d!52" i i •" jmp rd_l32

rcl_11502:sub di, f>jmp rd_152

rd_151: cmp di, 14jb rd_1511sxib dl,10jmp rd_152

rdj.511:add di, 2jmp rd_152

rd_152: jmp rd_llrd_!6: mov gdresel;!

/~MTir"i f* r i í> I 1t_^_l 11 j J ^Liíli-* -L

je rd_l601mov bx;word pli: dhexl+6jmp rdj.611

rd_1601: mov Ebx3D\vord pír dhexlE+10

mov al, di

Page 112: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPrnir.o K - II - 91

actuardwdwdwdwdw

rd_ip: mov

rd_sp: movjmp

rd_bp: mov

rd_si: movjmp

rd_di: movjmp

rd es: mov

rd_ax; movjmp

reí bx: mov

rd_cx: movjmp

rd_dx: movjmp

rd_flags:movmovjmp

rd_ds: movjmp

rd_fs: movjmp

rd_es: movjmp

rd_gs: movjmp

rd_ss: movrd_161:push

calipop

offset rdjp, offset rd_sp, offset rd_bp, offset rd_sioffset rd_di, offset rd_cs, offset rd_axoffset rd_bx, offset rd_cx, offset rd_dxoffset rdjflags, offset rd_ds,oflfeet rd_fsoffset rd_es, offset rd_gs, offset rd_ss

rd_Í<Sl.regsp,ebxrd_161regbp,Bbx

rd_l6lregsi;EbxrdJ61regdi,ebxrd_161reges, bxrd_161regax,Ebx

regbx,ebxrd_161regcXjBbxrd 161

etlagSjEbx

rd_lf: movmovmovmov

regds,bxrd_16lregfSjbxrd_161regesjbxrd_16lreggs,bxrd_161regss,bxdx

pdebugdxrd_aax, regessegcod}ax]iax,regipofTcod,ax

Page 113: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

*í6c P9cqo

so ppj:

t*ÍP09pJA~pJ

[ 'cL^iotCltmO

Xí6ctí°c'uo

tp3~~pj

£'IPOSplA pj

['cieno•£e[enoHóc'P

t^OlS3~pJ

zlpO3plA~"pJ

11* 113

L ltí*-«-O

T.O Cj \o

^I'lp103pIA~pl

ocn^oI'ITOO

ner'p^O'tio

ds»~pa0*IP

jf pj¿~p^

uiauíuiAiSdUI

AoaiAOUI

3Uf

dtuoduif

AOLU

AOUI

AOUI

AOUI

3UÍ"

duioduif

AOUf

AOUI

AOLU

AOUI

3UÍ"

duio :duif

AOUI

AOUI

AOUI

AOUI

duio :duif

AOUI

AOUI

AOUI

AOUI

3Uf

duioduif:duifUKOIfUO

ripg pj

: LS3~p J

dqs^pj

dso~pj

:OI~PJ

Zíl P-1

OT'P-1duio :TJduif

ufóiuuiAvsduiSaou

duioMsdtupooui

Page 114: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

sj ppj

trip03plA pJ

1 'juno

sp ppior_'ip

OSppY pl

'[u no

6^1PoopiA p;

('[«no

9e'iot'qo

81POOpiA pl

H9£'P

L'W03plA p.

pi

OOpIA pl

Olc[iíiio

L<IPOSpIA pl

oufduio :sp~~ppi

duifAOUI

AOUI

AOUI

AOUI

oufduro :0:3~p-rduif

AOUI

AOUI

AOUI

AOUI

oufduio ::duif

AOUI

AOUI

AOUI

AOUI

oufduio :x

AOUI

AOUI

AOUI

AOUI

pj

duio ::duif

AOUI

AOUI

AOUI

AOUI

3Uf

duio::duif

AOUI

AOUI

AOUI

AOUI

9Uf

duio :so~ppiduif

AOUI

AOUI

C 6 - H - H OULLWVD

Page 115: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

qsojs

íP ouíqsojs

íP ou.1

G'ltmoTpeA9JdJlp

[ip]:saeUB

ÍPjippd'ip

OSplA

ss ppj

trt>OOplA pJ

sS ppjeilp

S3 ppj

O3plA~pJ

íp OUL

qso^s

duio :rtAOUI

AOUI

AOUI

AOUI

OUI

AOUI

JTpSOd

:oop[A~pjAOUI

AOUI

AOUI

AOUI :ss~duif

AOUI

AOUI

AOUI

AOUI

oufduio :síT

duifAOUI

AOUI

AOUI

AOUI

duio :duif

AOUI

AOUI

AOUI

AOUI

oufduio :<;

duif

AOUI

AOUI

AOUI

AOUI

- u oirmsva

Page 116: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRCMfifiJVSM

inc dird_reg8:

stosbínc distosbínc distosbinc distosbretn

rd_2: ;Cambios en banderas del microprocesador.¿Flechas — > y <-- para ir a otra bandera.mov ventjlmov ventacnml, 1mov di, O ;bandera actual OFmov sijOffsetlOban ;Iínea Ocali mlinOlimpln l,revers ;linea ].print 16,3,llban,revers

- 95

rd_2a:

rd_21:

rd_22:

rd_221

pushmovcalipopmovvntcalimovmovcalicalicmpjnemovcalipushcali

popjmp

cmpjneinccmpjnemov:jmp

f5?f5?,0code?f5?bx, offset vb ;ventanapara cambios'a'rd__20 ¡resalta bandera actualal,aírprevdijdirprevrgkOrd_201 ¡quito resaltadogetword, 1 cOdh ¡enterrd_22gdreset, 1 ;dato valido.rd 210 ¡altera variable .Flagsdxmpsw ¡actualiza pantalladxrd_2a

getword, 4dOOh ; " — >"rd_23di ;siguiente banderadi, 8rd 223.dl,0rd_21

Page 117: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAMXULO H - ERO4SG.ASM H-96

rdJ23:cmpjnedeccmpjnemov

rd_231: jmprd_

rd

i'd_

rd^

rd

_241: movmovmovmovptishcalicalicalicalimovvntPopcmpjnecalicalijmp

25:cmpjnecalicalijmp

26: cmpjejmp

J20: movaddaddmovposdirmovincmovmovmovmov

201: stosb

getword^bOOli ; " < — "rd_241di ;bandera anteriordl^Offlird_231dl,7rd_221ax,regcs

segcod,axEax,regipoffcod^axdx ¡preservar ultimomcodmmemmregmpswbx, offset vb ;ventan a para'a'dxgelword,0í09h ;TABrd_25mregmpswrd_3

getword.OFOOH ;sTAB•rd_26itu'egmpsw

rcLigetword3011bli ;ESCrd frd_21

di

cambios

c!364 ;resalto bandera actualel, dicl,dlch,3c]5chdi,pddirdial,07ri ;video reversoah,es:[di] ¡atributo previoatrprev;ahdirprev,di

;pone atribvTto (AI-) en bar

Page 118: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPrrur.Q H - H -97

rd

rd

rd

addstosbreta

210: movaddmovcmpjbinccmpjbmovsubadd

_2101:movcíercrxorpushmovandandorpopreía

di, 159

dh,dl ¡en CL obtengo la posicióndh,4 ¡del bit a alterarsec!5dh ¡empezando por el fin.dl,3rd 2101eldi, 5rd 2101el, dicl,3cl,dhax,8000h ¡un uno y quince ceros

;CF=0 (desactivar acarreo)aXjCl ¡rotar CL vecesf]ags,axeaxax,:flagsea^OGOOffiheflags.OffííQOOOheflags,eaxeax

3: ¡Recibir una dirección y desensamblar desde ella.¡PGUP y PGDN para cambiar de paginas.¡Hechas — > y <— para pasar del un campo al otro sin alterarlo

rd

rd_

movmov

_30a: movmovmovmovmovmovmovmovcali

3a: pushcali

vent, 1ven tactual, 2dl,l ¡campo para el offset

11 f\0 ;Pagina 0

ax,offcodtabcocl,axax,proxinstabcod+2,axgdreset, 1si, offset lOcod ¡linea 0mlinO

dxmcod

pop dxcaliLimpln

code?1>REVERS ¡linea 1

Page 119: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - ERO436ASQI H-98

cmp dh,10jae rd_3alprint 9jl,ll,cod,reversjmp rd_3a2

rd_3al: pánt IS^llcodl^reversrdJ3a2: mov bx, offset vcc ;ventana para dar

mov aXjdsmov si, offset ulinevnt 'a'

dirección

rd 31:

axdxexbxsidi.esdsesdx;0ax,offbodbx,5957

bxcx,;nbx,axdi, offset barra 1

caüpushpushpushpushpushpushpusíipushpopmovmovmovdivmovmovmovmov al3'£rep stosbpop esmovmov byte ptr[si+bx]5f'mov bx, offset vbarra 1mov ax,dsvnt 'a1

pop dipop sipop bxpop expop dxpop axgetdata lfliI12h,dhexlI'h1

mov al,atrprevmov di,,dirprevmov gdreset,Qcali rd^SOlcmp gccod,0

;resalta campo actual, muestra # jjagina

;quito resaltado

Page 120: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTtlLO H - FR043GJVSRI H-99

rd_311

rd_32:

rd_33:

rd_34:

rd_341

rd_35;

rd_351

jnemovmovpushcaliPopjmp

.: cmp

jbcmpjnexorjmpcmpjnexorjmpmovcmpjnemovmovpushcal?popcmpjainc: movmuímovaddmovmovjmpcmp

jnecmpjnejmp: decmovmuí

rd_311gdreset, 1 ;dato validodh,0dxrd 310 ;altera variables y desensambladxrd_3agccod,3

rd_31gccodj3rd_33d1,l ;otro campord_31gccod54rd_34d],l ;otro campo

rd_31gdreset,!gccod,9rd_35aXjproxins ;PGDNofícod,axdxrocoddxdh,9 ; A la pagina 9 se regresa desderd_341 ;todas las pagjnas posteriores.dh ;no dejo que DH pase de 10.a!52dhsi, offset tabcodsi,ax ;ST apunta a la DH-esima pos. en TABCODax,proxins[si+2]Iaxrd_3agccod,8rd.36dh30 ;PGXJP, No bajo de la pagina 0.rd 351rd_3adh ;pongo pagina de arribaal,2dhsi, offset tabcodsi,axax,[si]offcod,ax

Page 121: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PROJS6.ASM H - 100

rd_35;

rd_37:

rd 38:rd_30:

rd_302

rd_301

pushcaliPopjmp

cal]movmovmovmovcal!cmpjnecalicalicalicalijmpcmpjnecalicalicalicali.jmpjmpmovaddcmpjbmov: movstosbmovmuímovincmovposdirmovincmovmovmovmov: stosbinc

d j c 1

mcoddxrcl_3a

^mstkax, regessegcod,axJiax,regipoffcocl,axmcodgccod,5rd_37mexpcmmemmregmpssvrd_5gccod,6rd_38mexpcmmemmregmpswrd 2rd fal,dhal, 'O1

dh,10rd_302al,'Xh

di, 46

al, 5dic1,alelch,3cl,ch.dijpcldirdia^OThah,es:[di]a1rprev,ahdirpreVjdi

di

¡ventana Opcmem2¡ventana Stack

¡ventana Código

¡TAB

;SHTFT TAB;ESC¡resalto área de segmento o de offset

¡primero muestro # de pagina

¡pagina 10 o superior

¡video reverso¡atributo previo

¡Atributo AL en segmento u offset

Page 122: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRG4Se.ASft.r

stosbinc distosbinc distosbreta

rd_310: mov ax,word ptr dhexH-6 ;desensamblo desde dir. dadacmp dl,0 ;Antes veo si lo alteradojne rd_3!01 ;fue el segmento o el offsetmov segcod,axjmp rd_3!2

rd_3101;mov offcod,axmov tabcod}ax

rd_312; cali mcodmov ax;proxinsmov tabcod+2,axcmp f5?3lje rd_3fincal! mregcali mpswcali mmem

1 1 - 1 0 1

rd_5: ;C:imbi.os en las opciones de ventanas de memoria relaíiva.;Flechas —> y <— para pasar a otra de las opciones; arriba;y abajo para ir a otra linea de la ventana; y PGUP y PGDN;para pasar de Segmento a Offset o a la inversa,mov ventjlmov ventacüía^Smov cll,0limpln l,reversprínt 2, .l,Uop2,revers

.RD51A:movmovmovcalimovmovmovvntmov

rd5H; calipushpushpushpush

dh,0si, offset 10op21readerr,0mlinObXjOffsetvmernrel ;ventana de memoria relativaax%clssi,oiTsetulíne2'a'gdresetj.

rd51.0j ;resalta linea actualaxdxexbx

Page 123: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAEECm.0 H - ERO4S6.ASM: H - 1 0 2

si,offset autooffax, [si]bx,5957bxex, 11bx,axdi, offset barra2

push sipush dipnsh espush dspop esmov dxmovmov ax, [si] ;ofíeodmovdivmovrnovmovmov a 3 $ ;rep stosbpop esmovmov byte ptr[si+bx];f'mov bx, offset vbaiTa2mov ax,dsvnl 'a'pop dipop sipop bxpop expop dxpop axgetdata2 ThjOer^dhexMEVh' ;regresa el buffer rotado y

Almacenado segmento y offsetcmp

je

movmovcalimovcmpjecmpjecmp

jecmpjecmpjne

rd5550:jmp

readeiTj 1rd51a

al,atrprevdi,dirprevrd5101jgdreset,0gccod,0rd51UOgccod, 1rdS550gccod, 2rd5550gccod, 8rd5550gccod, 9rd5554rd5551

;si ocurrió error en getdata2 buelvo al inicio;para que in^-ese nuevamente datos, ya antes se

;se borro bufíers dhex3 y dbexMr;quito resaltado de linea y opción

jfíecha arriba? navegación en ventana relativa

;flecha abajo?

;PgUp?

;PgDn?

Page 124: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PRO4S6.ASM: H - 1 03

- error 1: pushmovmovintpopprintcalijmp

rd5551:pushmovmovpop

rd5552: jmperror2: push

movmovint

P°Pprintcalijmp

rd5553: pushmov

rd5402: movpopjmp

rd5554: cmpjnecalical]cal]calijmp

rd518: cmpJne

calicalicalicalijmp

rd519: jmprd51110:cmp

cmpjajmp

error3: push

dx

dl,721hdx0,23 j overfl o w,reverserrorOrdSlaeax

eax,autoscgxxxxseg,eaxeaxrd5553clxah,2di, 721hdx0,23, overfl o w, reverserrorOrd51aeaxeax,autooffxxxxofT,eaxeaxrd53002

rcblSmcodmregmpswmmemrd_6gccod,6rd519mcod.mregmpswmmemr d 3

;TAB?

¡restaurar la pantalla

¡sT/VB?

¡restaurarla pantalla

;ESCdhexseg,0error3dhexseg,0fifflerror3rd5301dx ¡overfl o w

Page 125: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAITTULO H - PRO486.ASM H--304

movmovintpopprinl:cali

rd530J: píishmovmov

POPRD5300:

cmp

cmp

jmperror4: push

movrnovintpopprinícali

errorO; movmovrnovmovmovmov

jxUQn; movincdecjnzmovmovmovmovmovmov

rdlOb: movincdecjnzmovmov

21h

0,23,averjnow,reverserrorOrd51aeax

enx,dhexseg

eax

dhexof^Oerror4dhexoff.OSHherror4rd5302dx ;overflow

di,721hdx0,23 j overfl ow^reverserrorOrd51abxsoffset dhex3dh,[bx]ai30

si, 2

[si+bx],alsi

dhrdlOabx3ofíset dhexMrdh,[bx]al,0

dhrdlObposinijO •posmediumsO

Page 126: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

cAirruto ir - PRO-ISC-ASM: H - 1.05

movmovmovmovmovcal]caliretn

rd5302: pushmovcmpjbmovmov

rd5403:MOV

signopos,0signobef,0dhexseg,GdhexoffsOreaderr, 1mregmpsw

eaxeaXjdhexoffeax,0ff98hrc!5403eax,0ñ98hautooffjeax

xxxxoff.eax

;no se pase de Ofrffh en ventana de mem, reí.

pop eax

rd53002:call mcodcali mstkcali mexpccali preopccal] mmemmov dhexsegjOhmov dhexofíjOhmov signobef,0mov signopos,0jmp rd5la

rd510.T: movmovposdirmovincmovmovmovmov

rd5101j;movrd5]Q2J:stosb

incloopcalicalireta.

cl,25hch,9hcl,chdijpddirdiah,es:[di]a1rprev,ahdirprev,di«1,0711cx,9h

dird5102.Tmregmpsw

;bon~ar últimos datos ingresados de;seg. y oíf. en memoria relativa

,y volver al inicio;O,TO retorno con jmp y no con reln

¡resalta linea actual

¡atributo previo

rd_6: ¡Cambios en memoria directamente desde teclado. Las flechas —>;y <— no hacen cambio de linea. Arriba y Abajo no cambian de

Page 127: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO U - PRO486.ASM: ti.~l.Q6

¡pagina, son para pasar de linea o ventana, PGUP y PGDN para pasar;a oirá pagina (+-64 en la ventana absoluta, +-8 en las relalivas);;mov rd6?,0 ¡bandera para rd600 y rd.700

mov vent;lmov ventactual,4mov dl,0 ;DL=# de linea (0-1.2)mov dh,0 ;DH=# de columna (0-7)mov si, offset lOhex ¡linea 0cali mlinOlimpln 1,REVERS ¡linea 1print 6, l,Uhex,REVERSmov gdreset,!

rd6a; pushapush f5?mov f5?,0cali code?pop f5?popamov bx, offset vdh ¡dibujo la ventanamov axadsmov si, offset ulinevnt 'a1

rd6l: cali rd60 ¡resalto bytepush axpxish dxpxish expush bxpush sipush clipush espush clspop esmov dx,0mov si, offset autooff.mov ax,[si] ¡offcodmov bx,5957div bxmov ex, 11mov bx,axmov di, offset barra2mov al,'í:'rep stosbpop esm ov si, offset barra2mov byte pü-[si+bx]3'fmov bx, offset vbarra2

actual

Page 128: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTULO H - ER.O4S6.ASM H - 107

movvntpoppoppoppoppoppop

ílX» QS

'a'disibxexdxax

getdata ].4h,0eh,dbyte,íh.' ;recibo entrada de teclado

rd6ll:

rd6l.llrd<5l2;

rd<5l21rd6!3:

movmovmovcalicmpjnemovcaliinccmpjnemovInccmpjbdecmovjmpcmpjnedeccmpjnemov:jmpcmp

jneinccmp

mov:jmpcmpjneinccmpJne

mov

al,atrprev ;quito resaltadosdi,dirprevgdreset,0rdSOlgccodjO ;daío valido?rd611gdreset,!. ;sird610 ;altero memoria, actualizo pantalladh ;paso al próximo bytedh,8 ;hasta llegar al fin cíe la ventanard6adh,Qdidi, 13rd6adidh,7rd6agccod,! ;arriba?rd612di ;sid!30ñhrd6111di, 12rd£lgccod52 ;abajo?rd613di. ;sidl,13

dl,0rd61gccods3 ;— >?rd614dh ;sidh58rd6131dh,0

Page 129: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHTUI.O in - H - 108

rd<5131: jmprd6.l4:

rd614]rd615:

rd616:

rd617:

rá62:

rd<53:rd60:

rdSQl:

cmpjnedeccmpjnemov

.: jmpcmp

jecmpl'ne'calijmpcalicalicalicalicalicmpjnecalicalijmpcmpjnecalical]jmpjmpmovmovmovmuíaddmovaddposdirmovincmovmovmovmovstosbincstosb

rd<51gccod,4rd61,5dhdb,0ffhrd6.14.1dhjrd61gccod.8rd6.16gccod,9rd617rd6l60rctélmcodmstkmexpcramemmpswgccod,5rá62mregmpswrd_7gccod,6rd63iní'egmpswrd 5rd fcl,dhch,dla!53

elal,2fhcl,alch,9c],chdi,pddirdiah,es;[di]atrprev5andirprev,dial,07h.

di

;o PGDN?

;restauro pantalla

;TAB?

;st;SHIFT TAB?

;ESC;resalto byte actual, Pnmero¡calculo posición

;cambio el atributo

Page 130: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHHJI.O K - EB.O4S6-ASM H - 109

retn; push

rd610.1: pushm,ovmovpopmovmovmu]addmovaddmovstosbmovpushcalipop

rd61Gf: calicalicaüpopretn

rd61.6Q: movmov

rd61602;cmpjnesubpushmovmov

POP

dxeaxeax,autooff~di,axeaxes,autosegal, 8dia],dhah50

;a1tera memoria

di,ax ;ES:DI apunta a byte a cambiarse

es,videosegdxmmemx ¡actualizo ventana de memoriadxmcodmstkmexpcdx

si3offset autooff ;dirl ;si, SI apunta a dirección a alterarse

s

rd61603:addpushmovmovPOP

rd61(?04:pushcalicalipop

rd61605:retn

ex, 104gccod,8

rd61603[si], exeaxas, [si]xxxxoff,eaxeax

rd61604[si],cx ;PGDNeaxax,[si]

;CX tiene el valor a sumar o restar;PGUP?

eaxdx

preopcmmemxdx

rd_7: ;Cambios en memoria directamente desde teclado (ASCII). Las flechas;--> y <-- no hacen cambio de linea. Arriba y Abajo no cambian de;pagina5 son para pasar de linea o ventana, PGUP y PGDN para pasar

Page 131: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - ER.04Stf.ASM: H - UO

;a otra pagina (+-64 en la ventana absoluta, +-8 en. las relativas)movmovmovmovmovcalilimplnprint

rd7a; push apushmovcalipoppopamovvnt

rd71: calipushpushpushpushpushpushpushpushpopmovmovmovmovdivmovmovmovmovreppopmovmovmovmovATlt

popPoppoppop

vent3 1ventactual,5dl,0 ;DL=# de linea (0-12)dh,0 ;DH^# de columna (0-7)si,offset lOasc ;linea 0mlinOl,revers ¡linea 16)l,Ilhex,revers

f5?f5?,0code?

f5?

bx, offset vda ;dibujo la ventana'a'rd70 ;resalto ascii actualaxdx

f t

bxsidiesdsesdx30si, offset autooffa?s[si] ;offcodbx}5957bxex, 11.bx,axdi, offset barra2al,'^'stosbessi, offset barra2byteptr[si+bx],fbx, offset vbarra2ax,ds'a1

disibxex

Page 132: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - EEO486j\S&r H - ni

pop dxpop axgetcharmovmovstosbcmpjnemovmov

rd71x: cmpjnecalimovvntpushmovcalipopinccmp

Jne

movinccmpÍViJ*"

decmov

;recibo entrada de teclado;quito resaltado

rd711: cmpje

rd711x: cmpjnedeccmpjnemov

rd7111: jmprd712: cmp

jneinccmpjnemov

rd7121: jmprd713: cmp

;ENTER?

;si, simulo GCCOD-0;Enter=AM;dato valido?

al,aírprevdi3dirprev

gccod, 1rd71xgccod30gcascii,13gccod, Ord711rd710 ;si, alt. memoria, act. pantalla, — >.bx} offset vda ;dibujo la ventana ASCII'a'f5?f5?,0code?f5?dh ;paso al próximo bytedh,8 ;hasta llegar al fin de la ventanard71dh,0di(31,13rd71didh,7rd71gccod,5rd711xrd717

;especiales?

arriba?rd712didl,0fíhrd7111di, 12rd7]gcascii58Qrd713di

rd7121dl,0rd71gcascii',77

;si

;abajo?

s

Page 133: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H-112

jne rd714inc dhcmp dh,8jne rcl7131mov dh,0

rd7 1,31: jmp rd71rd714; cmp gcascii,75

jne rd715dec dhcmp dh,0fflijne rd7141mov clh,7

rd7 1,41: jmp rd71rd715: cmp gcascii,73

je rd716cmp gcascii,81je rd716jmp rd71

rd7l6: cali rd7160jmp rd71

rd71.7: cali pdebugcmp gccod,2jne rd72jmp rd_l

rd72: cmp gccod,3jne rd73jmp rd_6

rc!73: jmp rd_frd70: mov cl,dh

mov ch,dladd cl,47hadd ch,9posdir cl,chmov di,pddirinc diroov ah,es:[di]mov atrprev,ahmov dirpreVjdimov al,07h

;si

;<--?

;si

;PGUP?

;o PGDN?

;lecla invalida;PGUP 0 PGDN

¡restauro pantalla;TAB?

;si;SHIFT TAB?

¡si;ESC¡resalto byte actual. Primero¡calculo posición

stosb ;cambio el atributoretn

rd710: piish dxrd7101: push eax

mov eax,antoofTmov di,axpop eaxmov es:autoseg

¡altera memoria

;dirl+2

Page 134: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - ERXWS6.ASM I I - 113

movmuíaddmovaddmovstosbmovpushcal]popjmp

rd710f: calicalicalipopretn

rd7160: cmpmovmov

rd7l602:cmpjnesubpushmovmovpopjmp

rd7.!603: addpushmovmovPop

rd71604:pushcalical]Pop

rd7I605:retn

rd f;

al, 8dial,dhah,0di,ax ;liS;DT apunta a byte a cambiarseal,gcascii

¿actualizo ventana de memoria

es,videosegdxinmemxdxrd710fmcodmstkmexpcdx

dl,8 ¡ventana absoluta?sijOffset autooff ;dirl ;si, SI apunta a dirección a alterarseex, 104 ;CX tiene el valor a sumar o restargcasciiJS ¡PGUP?

UÍ71603[si],cs: ¡sieaxax,[si]xxxxofFjeaxeax

rd71604[si],cx ¡PGDNeaxax, [si]xxxxorT,eaxeaxdx

preopcmmemxdx

movmovcalical]íimpln 233nonnalprinl

RINOP6: ret

vent,0si3 offset lOinimlinOpdebug

Page 135: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - ER04S&ASM: H - .1 1-4

; RUTONAS COPROCES ADORRÜF3M:

fhstcw contcon ;cargar valores originales status y controlfnstsw statconfsave memjocfrslor memjocmov düofiset memocoplmov esi,offset memjoc ;almaceno TAGadd esi54mov bx,[si]push espush dspop espush bxmov al,bhhexascmov ax,bxxchg alsah.stoswpop bxmov al,blhexascmov ax,bxxchg al,ahstoswmov esi,offset memjoc ;almaceno ffTR (MSB)add esi, 9mov bljbyte ptr[si]rcr bl,4mov al}blhexascmov al,blstosbm ov esi, ofl'set: memjocadd esi, 6mov bx,[si]push bxmov al,bhhexascmov ax,bxxchg al.ahstoswpop bxmov a1,blhexnscmov ax,bxxchg al,ah

Page 136: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PS0436.ASM H - 1 ] 5

stoswmov esi,offsetmernjoc ;a1naceno OPCODEaclcl esi,9mov bl,byte ptr[si]and bl,7mov aljbíhexascmov aljblstosbmov esi,offset mem_locadd esi,8mov H[si]mov al,blhexascmov ax,bxxchg al,ahstoswmov esijOfíset memjoc ;almaceno OPTRadd esi513mov bl,[si]rcr bl,4mov aljblhexascmov al,b]stosbmov esi,ofíset mem.Jocadd esi,10mov bx}[si]] ish bxmov al,bhhexascmov ax3bxxchg a!5ahstoswpop bxmov al,blhexascmov ax,bxxchg al,ahstoswpop esmov prevdicsdi ;almaceno puntero de memorialpiish simov si,offset mem_Jocpush exmov cx}[si-l-2]and ch,38h

Page 137: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H- 116

movshrmovrorpopcmppopje

pushmovpushpushpopmovmov

Iazo2: stosblooppoppopmovmovmovandcmpjneadd

regtfO.!:addcali

regGQ: movmovandcmpjneadd

reg<511: addcalJ

cop61.1: movmovandcmpjneadcl

c1,2

cl,chwordptr [si+4],c1exword plr[si>4]3OfflJK

sicopvaciodidi, offset memocopl-l-17esdses ¡es^ds

pneinoria coprocesador

¡inicio borrando memocoplInzo2esdiprevdic,di ¡contiene puntero para mem, coprocesadoresijOffset mem_Joc ¡registro ST de la pila del coprocesador

ax,3h

regííOJprevdic,39reg60

esi,14 ¡apuntar a st(0)saveesi,offset mem_loc ¡almaceno st(í)ax3[si-f4JaXjOchax50chregól 1prevdic)39cop611esi,24 ¡apuntar a st(l.)save

esi,ofFse1 mem_loc ¡almaceno st(2)

reg62J,: add

ax,30hax,30hreg621.prevdic}39cop621esi,34 ¡apuntar a st(2)

Page 138: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - pROjas-Asat H - J17

cali savecop621:mov esi,offset memjoc ¡almaceno st(3)

mov ax,[sí-{-4]and ax,0c0hcmp aXjQcOhjne reg63.1add prevdic,39jmp cop63

reg631:add esi,44 ¡apuntar a st(4)cali save

cop63: mov esi,offset memjoc ¡almaceno sl(4)mov ax,[si+4]and ax,300hcmp ax,300hjne reg641.adcl prevdicí39jmp cop64

reg<541: add esi, 54 ¡apuntar a st(4)cali save

cop64: mov esi,offset memjoc ¡almaceno sí(5)mov ax,[si-H]and ax50c00hcmp ax,0c00hjne reg651add prevdic339jmp cop65

reg651: add esi, 64 ¡apuntar a st(5)cali save

cop<5?; mov esi,offset memjoc ¡almaceno st(6)mov aand ncrop ax^SOOOh

adcljmp

l; add esíj74 ¡apuntar 9 st(í¡)cali save

cop<56; mov esi,offsetmcmj.oc ¡almaceno st(7)mov nx,[?i+4]and ax,0c000hcmpjne reg(571addjmp

reg(571; add esi, 84 ¡apuntar a sí(7)cali

Page 139: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO 11 - PRCUSff.ASM: H - 1 18

jmp cop<57snve; cali snvest ¡guarda exponente y mantisa de ST(n) en ven_

;tana para memorial del eoprocesadorcaU expcop janaUza exponente actual de la pila cíe],

;coprocesadory lo convierte a decimalcali savemant ¡guarda esp, y mantisa en formato real en lareí ^ventana para memorial del coprocesndor

copí>7; mov dijOftset memocop2 ;memoria para satatus y controlmov nrevdic^dicali savecont- ¡almacena palabra de control en memoria2 para

;e] coprocesadormov di,prevdiccali savestat jahnacena palabra de staüL? en memoria2 para

;el coprocesadorretn.

>S AVEST; mov bx,word ptr[si+S] ;guarda exponente y mantisa de st(n)esds

pop esmov di.revdic ;apunta a siuiente fate en, memorial

mov al,bhhexasc ^convierto a ASC.U

xchg a],ahstoswpop bxmov al,blhexascmov ax}bxxchg al,ahstoswmov bx,\vord ptr[si+6] ;almaceno mantisapush bxmov al,bhhexascmov ax,bxxchg a],ahsloswpop bxmov al.,blhexascmov ax,bxxchg al,ah

Page 140: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

.i 'vi,

"F a ££

X 42

,C^T

«

X 43

•> re

re "

Iff

o

>

5 >

2P

nie

¡ii&

is|

c

p,

te r

d.

te

x «

P-

- P.

4^

te

o C/D en B •P

X 4¿

-C\ re

x

__r

re

rs

>

cO &

5

•=

SP

y °

P

F-<

M

«s 4^ re

ft te

Ü yj

re X ü 4^

X ^ 13

5< jf

re

£ j? "

c -o

2

te x

w

i — i

'OT, -b OH

Tj

V- o & X"

4= g P

4=

x -^

^

"re

4^

>2 b

P-.

E

£ x re

O w

^

i §

W

r-4^ "

4=:

re 13 ^ «

•5 S

X

w

_

xx

3

-o42

— "

X

re

reO

s-!¡

!&

E J

= E

re cfl

43 U X

5 írt o "55

acen

o p

unte

ro f

ina!

E 15 * **

"T3 **Ü 1 u P

H

g E

•-j

73 o" 1E/

3 !-•

U

&

§-¡

&• E

GH

P

O

Page 141: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHXIILO H - FRO4S6.ASM H-120

mov di,offset memocopl-HJmov cx5312mov al,1'

lazo: stosbloop lazopop esjmp cop67

EXPCOP: ;rutina que analiza el exponente y lo convierte a decimal;sale con código de acuerdo al tipo de dato asi:;copcop~0 si # es valido; copcop-2 si se trata de numero no valido;(3fffh < exp < -3.iffh); copcop=3 si # es un cero (exp=0000)mov copcopjOm ov ax, word ptr[£cmp ax3Gjne coplOOmov copcopj3mov signm, Ojmp íincopS

coplOO: cmp ax^Offffhjne coplOlmov copcop,2mov signm, 1 ;-NAN si EXP < -163 83jmp fincop3

cop 101: cmp ax, 7ff¥hjne cop!02mov copcop32mov sigam,0 ;+NAN si EXP > 16383

analizo si dato es valido

copl,02:test ax,8000bjz coplOJTIOV signm, 1jmp copll

coplO: mov signm,Ocopll: and ax,7fífb

subsubcmp ax,80QOh

;numero 4-o - ? (analizo signo mantisa)

;valor "-w

jvalor "-Í-";eíimono signo;exponente polarizado;por la multiplicación que se afectara a la

¿mantisa

mov signexp,! ;exponente"-"xor aXjOifffh ;calcuío complemento aí 2 para convertir eladd as, 1 ; exponente a un valor positivojüip cop 13

copl.2; mov signexp,0 ;exp;í^y^rjl^í- -mciir ^~iv 1 OADrt

,+« »U-"

inrvt7 i-l

r\-nj Trv*

Gilí t>^

Page 142: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAHXULO H - PR04S6-AS1VE H - 121

mov dms,eax

¡TJOV jw ]QOQmov ib;, Odiv bx

add dms,eaxmov ax,ds ;DX coníi

mov dx,0div bx<íh! a\ R->'M *' A) O

add dms,eaxmov ax,dxmov bx ln

mov dx,0

add tifus czix

Si

push esi ; se trata de mi "NAN"mov dijprevdicpush espush dspop es ;ds=escmp signm,0 ;dato 4- o - ?jne cop32mov si5offsetNANPOSmov cXj.1.9rep movsbpop esm ov prevdÍGj dipop esireln

cop32: mov si,offset NANNEGmov ex, 19rep movsbpop esmov prevdiCjdipop esiretn

copSl: cmp copcop}3

í..

Page 143: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - U - 122

jnepushmovmovmovpushpushpopreppopmovpopreta

cop30esidi,prevdic ;se trata de un cerosi,offsetZEROex, 19esdses ;ds=esmovsbesprevdic.di. ;guardo puntero de memorialesi

cop30: ;se trata entonces de un dato valido, almaceno mantisa y exponentecali

pushpushpopcmpjnemovmovstosbmov

j™pcop33: mov

movstosbmov

cop34: movmovmovhexascmovmovstosbmovmovmovpushmovhexascmovmovxchgstosw

mantisa ;regresa con valor convertido en decima] de;la mantisa en variable mantisf

esdses ; ds~essignm,0 ;signo de mantisa + o - ?cop33di,prevdic3],'+'

prevdiCjdicop34dijprevdic ;# negativoal,'-'

prevdtCjdidijOffset manlisfbl,byteptr[di+4]al,bl

di}prevdical,bl

prevdiCjdidi,offset mantisfbx,word ptr[di4-2]bxai,bh

clijprevdicax,bxah,al

Page 144: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAETTULO H - 5RO486ASM H - J 2 3

pop bxmov al,blhexascmov ax,bxxchg ah,alstoswmov prevdic,di

movmovpushmovhexascmovmovxchgstoswpopmovhexascmovxchgstoswmovsíosbmovstosbmovstosbmovcmpjemovmovstosbmov

jmpcop350: mov

movstosbmov

cop351; movtestjnztestjnztest

di,offsetmantisfbXjWord ptr[di]bxal,bh

dijprevclicax5bxal,ah

bxal,bl

ax,bxah,al

al,'x'

al,1!1

al,1A'

prevdiCjdisignexp,0cop350di,prevdical,'-1

prevdic,dicop351di,prevdical,'-!-'

prevdic,clieaXjdms

eax,0fl)000hcop355eax5OÍDOOhcop354eax^OfOOh

;exponente negativo

;dms contiene dato en decimal del exp.

;exponente de 5 dígitos

;exponente de 4 dígitos

o

Page 145: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPÍTULO It - 1-R04S6JVSM H - 12-4

jnztestjnzmovmovmovhexascmovstosbmovstosbstosbstosbstosbmovpopretn

cop352: movmovmovhexascmovxchgmovstoswmovstosbstosbstosbmovPOP

retncop353: mov

movmovhexascmovxchgmovstoswmovmovmovmovhexascmovstosb

cop353

cop352di, offset dmsaljbyte ptr[di]di,prcvdic

al,bl

al,' l

;exponente de 3 dígitos

;exponenle de 2 dígitos;exponente de 1 dígito

prevdic,dies

di3offset dmsbI3by[eplr[di]al,bl

ax,bxal,ahdijprevdic

al,1'

prevdic.dies

di, offset dmsbl,byte ptr[di]al,bl

ax3bxal,ahdi3prevdic

prevdic.didi,offseí:dmsalbyte ptr[di+l]di,prevdic

Page 146: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAI'IXULO H - FRCM36j\SM M - 125

mov al,' 'stosbslosbmov prevdJCjdipop esretn.

cop354: mov dÍ3ofFset dmsmov bXjWord pír[di]push bxmov al}blhexascmov ax.bxmov di,prevdicxchg al,ahstoswpop bxmov al,blhexascmov axsbxxchg al,ahstoswmov prevdic.dipop esretn

cop3 55: mov di, offset dmsmov bx.word ptr[di]piish bxmov a1,bhhexascmov ax,bxmov di,prevdicxchg ai,ahstoswpop bxmov al,blhexascmov ax,bxxchg al}ahstoswmov prevdic,dimov dijoffset dmsmov al,byfe p1r[di+2]mov di3prevílichexascmov a1,blstosbmov cli,prevdic

Page 147: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - ERO4S<r.ASM H -126

popretn

MANTISA:cíemovreímovmovmov

cop20: movreíJc

pushpushmovmovmuímovPoppopjmp

cop21: movdivaddpusb.pushmovmovmuímovmovpoppop

cop22; inccmpjbmov

es

ebx,dword ptr[si-¡-4]ebx3lvar2,2cx,lmantis,10000000heaxJOOOOOOOhebx, 1cop21 ;es un cero o uno?eax ;es un ceroebxeaXjVar2ebxs2ebxvar23eaxebxeaxcop22edx}0

var2 ^entonces es un " ,1 "manííXeaxeax.ebxeax,var2ebx, 2

ebxvar2jeaxeaXjVar2ebxeax

excXj28 ;sufíciente presicion practicacop20eax,mantis

^conversión a decimal de la mantisamovmovdivmovpushxor

ebx,l. 00000000edx,0ebxdi,o0set mantisfeax

eax3eax

Page 148: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CA1TTULO K - PfiO4S6j\SM: H - 127

movPopmov

movmovmovdivshJadd

movmovmovdivshladd

movmovmovdivshladd

movmovmovdivshladdmovmovmovdivshladd

.movmovmovdivshladd

[di], eax ;borro el <eaxbyteplr[di+4],al

eax,edx ;recicluo a edxedx,0ebx, 10000000ebxeax,28

[di], eax

eax}edxedx,0ebx, 1000000ebxeax,24[di] } eax

eax,edxedx}0ebx,100000ebxeax,2G[di] j eax

eax}edxecl\%0ebx, 10000ebxeax, 16[di], eaxeax,eclxedx,0ebx,1000ebxeax512[di],eax

eax,edxedx,0ebx, 100ebxeax, 8[di], eax

mov eax,edxmov edx,0

Page 149: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAMTULO K - FRCU8£.ASR,r H - 128

ebxmovdivshladd [di],eaxadd [di],edxretn

S AVESXAT; ;guarda palabra de status de coprocesadormov di,prevdicpush espush dspop es ;ds-esmovpush statconpush bxpush bxmov a],bhhexascmov ax,bxxchg a],ahstoswpop bxmov al,blhexascmov ax,bxxchg a1,ahstoswpop bxmov aXj'O'rcr bx, 1jnc copiemov aXjT

copie: stosb ;iemov aXj'O'rcr bx,]jnc copdemov ax,T

copde: stosb ;demov ax,'0'rcr bx, 1jnc copzemov ax,T

copze; stosb ;zemov ax,'0'rcr bx, Ijnc copoemov ax.T

;bx contiene status

Page 150: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

S3Í

atií

30Í

¿t-isCCXG

t£OCÍ03

,9/1'-'

¿Sis9'xt:

teodoo

¿'(ü¿9JS

Ll™

ÍT^XG

iT/XB

¿odooT'xq

.OÉ'XK

,1/XG

[odoofxq

lO/xe

.[/XG

Qodootexq

.0/XB

,!>•S3CIOO

^'xqlO/XE

r £YPi Li AB

sddoo['xq

lOt^

/t/XK

andoot'xq

,0/xt;

surduio :¿gj¡duif

qsoisAOLU

3UÍ"

cUuo :¿9jsduif

qsojsAOLU

3Uf

dLUO

aoJdod

qsojs :^odooAOLU

ouf40J

AOLU

qsois :|'odoaAOIU

ouf40J

AOLU

qsojs :QodooAOLU

oufJOJ

AOLU

qsojs :ssdoo

AOLU

ouf.IOJ

AOLU

qsojs íoddooAOLU

oufJOJ

AOLU

qsojs :sndooAOLU

oufJOJ

AOLU

qsojs : 3 odoo

6Z'l - H - H

Page 151: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAi-rnnio K - pRCU86.AsaE t-| - 130

mov al,'5'Slosbjmp copcSl

st4?: cmp ax,4jne si 3?mov al,'4'stosbjmp copc3,l

st3?: cmp ax,3jne st2?mov al,'3'stosbjmp copcS 1

sl27: cmp ax,2jne stl?mov al/2'stosbjmp copc31

stl?: cmp ax,.ljne stO?mov al,1!1

síosbjmp copcSl

srO?: mov al,'Q'stosb

copcSl: mov ax,'0'rcr bx,4jne copcSmov ax,T

copc3: stosbmov prevdiCjdipop esretn

SAVECONT: ¡almaceno palabra de controlmov dijprevdicpush espush dspop es ;ds=cspush contconpush contconmov bx, contconpush bxpush bxmov al,bhhesasemov ax,bx

Page 152: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PR&ISfíJvSRt H - 131

Xchg a1,ahstoswpop bxtnov al,blhexascmov ax,bxxchg a1,ahstoswpop bx ;bx contiene statusmov aXj'O'rcr bx, 1jnc copimmov ax,T

copim: stosbmov aXj'O1

rcr bx, 1jnc copdmmov ax,T

copdm: stosbmov aXj'O1

rcr bx, 1.jnc copzmmov ax,'l'

copzm: stosbmov ax,'0'rcr bx,1jnc copommov ax,T

copom: stosb.mov ax,'0'rcr bx, 1jnc copummov aXj'l'

copum: stosbmov ax,'0'.rcr bx,.1jnc coppmmov ax/1'

coppm: stosbpop axrcr ax,8and axs3cmp ax,3jne pc2?mov ax,3'stosbjmp copre

Page 153: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

fo'xq AOUIxq£!'3jU3iquitrqd AOLU

q AOUIxu'sp AOUI

B AOUI

opoisiuddut[

T CYPi Li 'vt-

oidoo¿<xq

UJ3J

dodAOLU

qso;s :oidooAOLU

ouf

qso^sAOLU

Qoidoo duifqsois

,'f/Xt' AOUI

¿QOJ 3Uf

I1 cxe duioOoidoo duif

qsojs,7,eXB AOLU

dtuo :;,duif

qsoisAOLU

g'xe duio£*XB pUE

Ol'XB JOJ

XB dod :ojdooqso^s

,0/xe AOLU :¿oodojdoo duif

qso^s,1,'XE AOLU

['XG duio :¿todojdoo duif

qsojs.^/XB AOLU

¿pd suf7cxc duio

Z£ I ~ H

Page 154: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRO486.ASM K-133

movmovmovmovmovmovmovmovmovpushmovmovmovincmovintpopmovmovintpushmovmovmovintmovmovmovintjnccalijmp

simemoria2:push

P°Pmovmovmovintjnccali

bien corrí do2:movmovpopmov

pb . p aramaddress, bxpb .paramsegmenl p, axbx,offset fcbloque!.pb,fcbj,offset,bxpb ,fcb 1 segm ento, axbx,offset fcbloque2pb.fcb2offsel,bxpb.fcb2segmento,axbx, offset pbdses,axdijpb.fcbl offsetsi,pb. ambiente!siax,2901.h21hesdi,pb.fcb2offsetax,290!,h21hbpviejosp,spviejosSjSsah,62h ;obtener dirección de mi PSP21hes,bxbx,2000h ;2300h ;acortar la memoria que utilizoahj4ah21hsimemoría2menseirorbien corrí do2

dsesbXjOffeet pbdx3 offset nombre!ax,4bOOh21hbien corrí do2menserror

ss,viejossspjviejospbpvisible,0

mmuestra I5visible3ratonpresen te

Page 155: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRO486.ASW H - .134

roov ah,2mov bh,0mov cíh,24raov di, Oin.t lOhrtodocali .funcionescali pdebugmov si,offset lOini ¡preparo y muestro linea Ocali mlinOjmp salida

ensambla:mmuesira 03visible,ratonpresenleItnppntstodomov ax,@datamov ds,ax

mov bx, ambientemov pb. ambiéntelas:mov pbl,ambientel,bx

mov bx,ofísef narchlmov pb.paramaddress.bxmov bx,offset milmov pbl.paramaddresSjbx

mov pb.pararnsegmento,axmov pbl.paramsegmento.ax

mov bx, offset- fcbloquelmov pb.fcb.loffset,bxmov bx, offset: fcbloqueSm ov pb 1 .fcb 1 o lTset,bx

mov pb,fcb].segmento}axmov pbl.fcbJ.segmento,ax

.mov bx, offset fcbloque2mov pb.fcb2offset,bxmov ]3b.fcb2segmento,axmov bXjOffsel fcbloque4mov pb I .fcb2offset5 bxm ov pb 1 .fcb2segmento, ax

mov bx,offset pbpush ds

Page 156: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO H - PRQ436.ASM: H - Í35

movmovmovincmovintpopmovmovint

movpushpopmovmovincmovintmovmovintpushmovmovmovinl:movmovmovintjnccalijmp

es,axdijpb.fcbloffsetsi,pb. ambiente!sias,2901h21hesdi)pb.fcb2offselax,290!h2!h

bx, offset pb!clses

sijpb!,ambiente!siax,290!h2!hdi,pbl.fcb2ofifeetax,2901h21h

viejosp,spviejoss^ssah,62h21h.es,bxbx,2000hah,4ah2!hsimemoriaemenserrorbiencom'doe

;obtener dirección de mi PSP

¡2300h jacortarla memoria que utilizo

simemonae:movmov

simemoriae!:pushPOPmovintjnccali

bien corrí doe:cmp

dx, offset nombre2bx, offset: pb

dsesax,4bOOh2!hbiencorridoemensen-or

cl,lbh

Page 157: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITULO K - PRCMS&ASM H - 136

Jemovmovintmovintmovcmp

Je

movmovinl:movmovmovjmp

yalink:movmovpopmov

yalxnkah,9dx, offset: mensens21hah,016hel, alcUbhyalinkbx,2000h ;2300h Acortarla memoria que utilizoah,4ah21hdx, offset' nombre3bx, offset pblcl,.lbhsimerooriae.1.

sSjViejossspjVÍejospbpvisible,0

mmuestra .1 ,visible,ratonpresentemovmovmovmovintríodomovmovintmovinlcalicalimovcalijmp

recleívect:pushpushpushpushmovinl:movmov

ah,2bh,0dh,24dl,0lOh

ah,9dx, offset mensensl2.1hah,016htincionespdebugsi, offset lOini ;preparo y muestro linea 0mlinOsalida

;Redefíne vectores 6h y 7h ;97/02/28clsesaxbxax,3506h2.1 hold6h,esold6h+2,bx

Page 158: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H-137

movintmovmovmovmovmovmovintmovmovintpoppop

POPpopretn

ax,35G7h21ho]d7h,eso1d7h+2,bxax,csdSj3X

dx, offset new6hax3250óh21hdx, offset newThax,2507h21bbxaxesds

new6h proc far

finintl:

;nueva rutina para ta interrupción 6h;instrucción no válida

push axpush dsmov ax3(ojmov ds,axmov error, 1cmp errorcjjOflhje finintl,pop dspop axpop axinc axpush axjmp finint

dsaxaxax

finint:

POPpoppopincpush. axint 3

iretnew6h endp

Page 159: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

CAPITÍILO K - BRO4S6J\SHr H- 138

proc far

push axpush dsmov ax,@dalamov ds,axmov error, 2cmp errorcjjOffhje finintlpop dspop axpop axinc axpush axjmp finintiret

newTh endp

pubHc restorvecrestorvec proc near

mov ds,o1d6hmovmovmovintmovmovmov.intretn.

restorvec endp

;nueva rutina para la interrupción 7h;coprocesador no présenle

dx,oid6h+2ah,25h

2Íh

dx,old7h+2al,7h

end

Page 160: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE IT - DEFÜEA.ASM H~ - 1S9

MODULO DEPURA.ASM |

;Ejecuta porciones de código.

.model small

.486

.data

pubHc XferAddr,PointerLsl;Vector2Fpxiblicpublicpublic TablaBrk5FLoadExe;FileSizesFileNarnepublic FinNorma],PSPParent

MyLength equ 36QOh

Vecror2F dd ?ChildName db '01^^486.6x^,0FüeName db 256 dup (0)

ParBIoclí dw OPtrCommLme dw offset CommLineCommSeg

ParBlockNewCommUneFfleSizeFilePtrExeFIagFinNormalReglpRegCsRegSpRegSsRegBpRegDsRegEsRegDiRegSiRegDxRegCxRegBxRegAxflags

dw ?dw 6 dup (?)dd ?db 0,0,0

dw 0dw 0db 0db 0dd ?dw ?dd ?dw ?dd ?dw ?dw ?dd ?dd ?dd ?dd ?dd ?dd ?dw ?

Page 161: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al'EtíDICE K - DEPURA-ASM H - 140

EÜagsregfsreggsRegTpTnicRegCsTnicRegSpInicRegSsTjücRegBpTnicRegDsTnicRegEsInicRegGsTnicRegFslnicRegDunicRegSilnicRegDxTnicRegCxtnicRegOxEnicRegAxTnicílagsTnicEflagsln.icParSpParSsPSPParentPSPChildstaitNamelenghtNameNByíesFallanFHandlerwAreastoreprvstoreprv2PrsiVPrg.PrsrvPspvectorvecfor2PointerLstPoinlerNxlXferAddrXferProvnadaPrCoclInsTipoCompliCRegCompECValCompECRelardoTF

dddwdwdddwdddwdeldwdwdwdwddcidciddddddddwdddwdsvdwdwdwdbdw

dwdbdwdbdbdbddcidddddciddddbdb

clbdbdd

db

Q

?rj

9

9

?

9

9

9

9

9

9

9

9

79

?

9

?

9

9

9

9

9

9

9

9

9

51,2 dup (?)9

256 dup (?) jzona de preservación de inst. anterior32 dup (?)256 dup (?)? jarea de preservación de vectores de int.?

? ¡apuntador a la última inst. (en EXHASTA)9

? ;dirección de transferencia tras la ejec.9

30 dup (?).16 dup (?)

9

9

9? ¡bandera indicadora de si se produce retardo

FLoadExe db;1a interrupción de trap flag.

Page 162: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEPDIULÁSM H - 741

corre? db O ;indica si se está corriendo hasta detectar;una condición

TablaBrk db 4096 dup (?)

.codeextrn desens:proc,assem:proc

JoadRegs proc near

;Este procedimiento carga los registros con los valores de memoria.

mov aXj(_mov ds,axpop ax ;extraer la dirección de retorno de estamov worii ptr cs;retloadip,ax ;rutinamov word ptr cs:reíloadcs,cs ;ponerla en el Jmp finalmov bXjílagsmov Edi,Regfpmov es3RegCsmov a1,es;[di] ;opcode de la instrucción por ejecutarcmp 3l,üfah ;CLT?jne NoCHand bXjOfdffh ;si} borrar Ijmp short PonFl.

NoCli: cmp al,0fbh ;STT?jne NoSíior bx,200h ;si, set Ijmp short PonFl

NoSíi; mov Edi,RegSpmov es,RegSscmp a]59dh ;POPF?jne NoPopfmov bx,es;[di] ¿si, obtener flags cíe stackand bXjOfeffti ;borrar Tjmp short PonFJ

NoPopf: cmp al,0cfh ;IRET?jne PonFlmov bx3es:[di+4] ;si, obtener flags de stackancl bx,0feffh ;borrar T

PonFl: push bxmov fhgs}bxpopfpush eaxpiishfd

pop eaxmov eflags.eax

pop eaxmov Eax^regAx

Page 163: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE X - DEPUEA-ASM

mov ebx,regBx.mov ecXj,regGxmov edx,regDxmov ebp,regBpmov esp,regSpmov esi,regSimov edi,regDimov es,regEsmov ss,regSsmov ds,regDsdb Oeah ¡.UVÍP FAR

reíJoadip:dw ?

reüoadcs:dw ?

loadRegs endp

storeRegs proc near5

;Este procedimiento pone en memoria los registros.

H - 142

pushfpushpushmovmovpopmovmovmovmovmovmovpushxormovaddandpushmovancimovPOP

addmovpopmov

dsax ;(9/12/96)ax}@datads,ax

regAXjEaxregBXjEbxregCx,EcxregDx,EdxregBpjEbpregsp.espeaxeax, eaxeax,regsp

eax.OOOOffifheaxeax,regspeax5OfEETOOOOhregsp.eaxeaxeax,regspregsp:eaxeaxregFs,fs

Page 164: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEPUHA.ASM: H-143

movmovmovmovmovpopmovpopmovandormovpushandandorpopretn

storeRegs

regCjs3gsregSijEsiregDi,Edireg£s,esregSs^saxregDs,axax ;AX=fbx,f)ags ;BX:

bx3200h ;dejax,bx ;dejaiflags,axeaxea^OOOOrTiíheflags}OrEm)OOOheflags,eaxeax

endp

; nuevas~Qags anteriores

;dejar solo la bandera de interrupciónel estado anterior de I en flags

public TestTrapTestTrap proc .near

;Este pi'ocedimiento determina como se comporta la computadora en cuanto a si;hay o no retardo en Ja interrupción 1> que debería producirse en cuanto sea 1;la trap flag, pero que suele retardarse en una instrucción en ciertos;micropro cesa dores. De ser este el caso, ReííirdoTF es 1, y de lo contrario 0.

pushpush.pushpushpush;push;pushmovintmovmovmovmov

axbxdxdsesfsgsax,3501h ;get vector .121hax;@datüds5axword ptr vector,bxword ptr vector-t-2, es ;preservar vector original

mov ax,csmov ds.axm ov edx, offset AfVerTestmov ax,2501b ;poner como vector la dirección de APTERTESTint 21h

Page 165: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEPURA-A-SMH -

xor bx,bx ;BX - O;flags en el stack¡fiíigs en AX;T = 1jflags cambiadas devuelta al stack

¡tras esta instrucción, debe producirse la inf;si hay retardo, se ejecutará esta inslrucción

¡restaurar stack, alterado al producirse la int

pop axor ah,lpush axpopfnopmov bx,lnopnop

AfterTest:add sp,<5mov ax,@datamov ds,axmov RetardoTF,0cmp bx,0je YaProbadoinc BytePtrRetarcloTf

YaProbado:Ids dx, vectormov ax,2501h ¡restaurar vector 1int 21hpop espop dspop dxpop bxpop axretn

TeslTrap endp

public ExUniqExUniq proc near

3

¡Este procedimiento coloca el código de SETTRPFLG inmediatamente antes de la¡inslrucción que se desea ejecutar (preservando lo que estaba antes), ejecuta¡dicha instrucción, y luego restaura el código. Si la insfracción es una¡intemipción, el procedimiento es diferente: se simula dicha interrupción¡de forma que se recupera el control una vez ejecutada.

¡Entrada: Regjp; RegCs: Deben contener la dirección absoluta de la; instrucción que se quiere ejecutar.; RetardoTF: Debe ser ]. si hay q\ie considerar un retardo; en INT 1 tras hacer T=l, O en caso contrario.; XFERADDR: Debe contenerla dirección absoluta donde debe; transferirse el control una vez finalizado este; procedimiento.

Page 166: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE li - DEPURA-ASMH - 1.45

;Satida: RegjpRegCs: Contienen la dirección déla siguiente

instrucción, después déla ejecutada.

;TiVIPORTANTE: Este procedimiento debe invocarse mediante un¿medíanle un CALL.

y NO

cidmovmovmovmovmovmovmovcmpjbmovmovjmp

noKB: movcmpjejmp

Silní; movcmpjne

SaUIhtympNolnt21:mov

intmovcmpjaemovmovmovmovmovmovpushpopfclipushfpushmovadd

ax,@dataessaxds,axcl,RetardoTF ;bandera de retardo en CL]isi,RegTpds,RegCsax,dsax,OaOQOhnoRBax,@daíads,ax

;DS:SI = apuntador a la instrucción

jROMBTOS?

dword ptr XferAddr ;si, no hacer nadaal, [si]al,0cdhSiTntNolntal,[si+l]al,21hNolní21ExPaso

ah,35h21hdx,esdx,GaQOOhSílltíllt

dx,@datads,dxParSpjSpParSs3ssEsp,RegSpss3RegSsílags

RegCsEdx,RegIpdx,2

;es una TNT ?

;número de la int.

¡siempre sallar la int 21

;get vector

¡ROMBTOS?;si, saltar

¡Simular la inteirupción

Page 167: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEFURAASM H - 146

pushmovmovmovmovmovmovjmp

RegSp,ESpRegSs,SsSpjParSp

RegIp,Ebx ;apRegCs,esdword ptr xferaddr

Nolnt:cmp

cmpjne

SiMSRg:jmpNoMSrg: cmp

jnecmpjecmpJe

cmpjecmpjejne

SiMSRgl:andcmpje

norargl:pushdecdecmovmovmovsbmovsbmovmovmovmovcmpjnexchg

AlterCod:stosb

al,8chSiMSRgal,8ehNoMSrg

Expasoal,0fh

SiMSRgl[si+l],0a0hSiMvSrg

; apuntar a la rutina

;finali.zar

;mov sreg ?

SiMSrg[si+l],0a8hSiMSrg[si+l]}0a9hSiMSrgnomrgl

al,0e6h

SiMSrg;push o pop sreg?

dssisi ^apuntar a los dos bytes anterioresdx,si ;preservar este apuntadoredi,offset storeprv ;ES:DI apunta a donde se preserva el código

;preservar código anterior a la instrucción

ax.,dses,axdi,dxax,909dhcl,0AlterCoda!3ah

;ES:DI apunta a donde se colocara POPF;código de POPF y NOP

;si no hay retardo, poner el NOP antes del POPF

¡colocar el código alterado

Page 168: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEFDRA-ASM H - 147

movstosbmovpushintmovmovmovmovmovmovmovmovintpoppopmovmovmovmovmovmovcalipushfpushpushmovmovor.movpoppopdb

dirip: dwdircs: dw

al,ah

ax,3501h ¡get: vector 1dx21h

ds}axWord pír vector,bxword ptr vector-K2, es ¡preservar vector originalaxjcsds.axedx, offset afterexax,250.1h ;poner como vector la dirección de AFTEREX21hbxaxword ptr cs:dirip;bxword ptr cs:dircssax ¡dirección del salto

ds}axParSp3sp

loadRegs ¡poner los valores de los registros¡flags en el stack

axbpbp3sp ¡apuntar BP al stackax,[bp+4] ¡flags en AX

[bp-f4],ax ;flags cambiadas de vuelta al stack

axOeah ¡JMP FAR

alíerex: ¡aquí se pasa el control luego de ejecutar la

ax ¡instrucción única por efecto de la intpush bppush dsmov ax,@clatamov ds,axmov bp,spmov ax,[bp+6] ¡obtenerla dirección deretornOjm ov word ptr pointernxt, axmov ax3[bp+8]

Page 169: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEFURAJvSM 4-148

movpoppoppopcalicid

movmovmovmovmovmovdecdecmovmovsbmovsbIdsmovintmovmovmovpushxorpopmovmovmovjmp

exuniq endp

word ptr poínternxt+21ax ¡preservar esta direccióndsbp ;(9/12/96)axstoreRegs ;salvar registros

; hace flag D=0 por lo tanto SI y DT incrementan¡solo se ]o usa en cadenas JORGE(9/12/96);no efecto con mi problema (eip=eax en parte alta)

ax,@datadsjíixsp,ParSpSs,ParSsEdi,RegTpes,RegCs ;ES:DI = apuntador la instrucción ejecutadadi ¡apuntar al código alteradodiesijOÍfset storeprv

¡restaurar código

dXjVectorax,2501h ;restaurarvec1or ]21hax,@datads,axax,word ptr pointemxtaxeax,eaxaxRegTp.eaxaXjWord ptr poiníernxt+2RegCs5axdword ptr xfei-addr ¡.finalizar

p\iblic exhastaexhasta proc near

;Este procedimiento ejecata desde la dirección de inicio indicada (inclusive)¡hasta la de finalización (exclusive) indicada.)¡Entrada: Reglp; RegCs: Deben contenerla dirección absoluta de la; instrucción desde la que se quiere ejecutar.; POTNTERLST; Debe contener la dirección absoluta de la; instrucción hasta la que se debe ejecutar.; XFERADDR: Debe contener la dirección absoluta donde debe: transferirse el control una vez finalizado esle

Page 170: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE It - DEPURA-ASM |_[ _ j^g

; procedimiento.

3

¡IMPORTANTE: Este procedimiento debe invocarse mediante un JMP, y NO¡mediante un CALL.

cidmov ax3@datamov ds,axmov ah,62h ¡encontrarla dirección de mi PSPint 2.1hmov PSPChildjbx ¡Preseivarla, asumiendo que este es un childmov edXjüffset afiergocali SetTerm ¡por si hay un EX1T, fijo dirección de term.les si,pointerlsí ¡ES;ST = apuntador a Ja última instrucciónmov ax^escmp a^OaOOOh ¡ROM BIOS?jb noRBhjmp dword ptr XferAddr ¡si, no hacer nada

noRBh; mov a],es:[si] ¡preservar lo que hay allímov byte ptr storeprv, almov byte ptr es:[si],0cch ¡colocar un breakpoint (INT 3)mov ax,3503h ¡get veclor 3int 21hmov ax,@datamov ds5axmov word ptr veclor,bxmov word ptr vector-K^es ¡preservar vector originalrnov ax,csmov ds,axmov edXjOfíset' aftergomov ax,2503h ¡poner como vector 3 la dirección de AFTERGOint 21hmov ax,@datamov ds,axmov Eax,RegTp ¡preparar ejecuciónmov word ptr cs:goip,axmov ax,RegCsmov word ptr cs:gocSjaxmov ParSp,spmov ParSs.sscali loadRegsdb Oeah ¡TMP FAR

goip: dw ?gocs: dw ?

afíergo: ¡aquí se pasa el control luego del breakpointcall storeRegs

Page 171: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEPUHAj\SM H - 150

cidmovmov.movmovmovinrcmpjecaUcal]movmovcalimov

EsHijo: movpushxorpopmovmovmov

RestDir;lesmovmovIdsmovintmovmov

exhasta endp

[email protected],axsp3ParSp

ah,62h21h ;obtengo dirección de PSP actualbx5PSPCbÜd ¡es este un proceso hijo?EsHijoSavePspCh-ild ¡no, preservar parámetros del PSPReduceLevel ¡bajar de nivelax,@datads,axRestPspChild ¡restaurar parámetros del PSPEinNormal,.!. ;mostrar mensaje de finalización de procesoshort RestDirax,word ptr pointerlst ¡poner la dirección de la nueva inst.

axeax,eaxaxReglpjEax ;coino resultadoax,word pír pointerlslH-2RegCs,ax

;ES:SI = pointer al breakpointsi,pointerlstal,byte pír storeprves: [si], al ;restaurartlx, vectorax,2503h ¡restaurar vector 321hax,@clatads,ax

dworcí ptr xferaddr ¡finalizar

publíc expasoexpaso proc near

¡Este procedimiento ejecuta desde la dirección de inicio indicada (inclusive)¡hasta la siguiente intrucción (exclusive). Es útil para saltar subrutinas.j¡Entrada: Reglp; RegCs; Deben contener la dirección absoluta de la¡ instrucción desde ja qxie se quiere ejecutar.¡ XFERADDR; Debe contener la dirección absoluta donde debe; transferirse el control una vez finalizado este

Page 172: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEETTOICE H - DEFÜRA.ASM H - 151

procedimiento.

;IMPORTANTE: Este procedimiento debe invocarse mediante un JMP, y NO;mediante un CAUU3

cidmovmovmovmovlodsbcmpjbcmpjbe

noprf: decgetlen: mov

movmovcalimovacldmovmovmovmovmovcmpjnejmp

No.Tmp: cmpjnecmpjnecmpjnejmp

NoRet: cmpjnecmpjnejmp

NoTret: cmpJne

cmpjnecmp

ax3@dataíls,axEsi,RegTpdSjRegCs

al,0f0hnoprfal}0í3hgetlensiax,@dataes,axedi, offset nadadesensbx3es:[di] ;obtener primeros caracteres del mnemoex, siax,@datads,axword ptr pointerlst,cxax,RegCsword ptr pointerlsM-2jaxblj'.T ;es algún tipo de salto?No Jmp ;noExUmq ;si

bl/R' ;esunRET?NoRetbh/E'NoRetbyteptres:[di-K>],Tf

NoRet ;noExUniq ;si

bl,T ;esun.TRET?Nolretbh,'R'Nolret ;noExUniq ;sicon'e?,0fíh ;si se está corriendo hasta unairexhasta ^condición se debe ingresar a los calibi;Cf ;esunLOOP?

irexhastabh.'A1

Page 173: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEPURA-ASM I I - 152

jne irexhastacmp byte ptr es:[di+2],lL1

jne irexhastacmp byte ptr es:[di+3],'L'jne irexhasta ;nojmp exuniqirexhasta;jmp exhasta

expaso endp

public exCondexCond proc near

3

;Este procedimiento ejecuta desde la dirección de inicio indicada (inclusive);en adelante hasta que se cumpla una condición determinada.3

¡Entrada: RegTp; RegCs: Deben contenerla dirección absoluta de la; instrucción desde la que se quiere ejecutar.; AL; O si la condición es igualdad de un registro; con un valor; .1. si la condición es desigualdad entre un; registro y un valor, en ambos casos:; AH: xxxOwReg para registros normales; xxxlxxSr para registros de segmento; BX: valor; 2 si la condición es de flags, en este caso:; AH: xxxxCond; XEERADDR: Dirección de terminación al finalizar;Salida: RegTp; RegCs: Apuntan a la próxmía intrucción tras cumplirse; la condición;NOTA: Este procedimiento debe invocarse mediante Jmp, y no Cali.; ""

mov dx,@datamov dSjdxmov corre?, Offhles dx,XferAddr ;preservar el XferAddrmov word ptj- XferProv}ci\m ov word ptr XferProv-i-2, esmov word ptr XferAddr+2,cscmp al,2 ;condición de ;flag?jne RegCondmov edx,offset FICondRet ;si, fijar terminaciónmov word ptr XferAddr,dxand ahjOfh ¡generar código de un Jconditionor ah,70h ;cambiar el código para que se produzca

Page 174: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APEWDICE H - DEFURAJ\SM:I I - 153

111 OV

RegCond:mov.movmovmovmov

RS2EC: cmpjnemovjmp

RS3EC: cmpjnemovjmp

RS4EC: cmp

byte ptr cs:condic,ah ;un salto en la condición dadaExPaso

edx3offset RegCondRet\vord ptr XferAddr,dxTipoCompEQalRegCompEC,ahVíilCompEC,Ehx

ExPasoFICondRet:

movmovcmpjepushpopf

Condic:

jojmp

GoExitCond:jmp

RegCondRet:movmovcmp

movtest

andcmpjnemovjmp

RS1EC: cmpjnemov

ds,axFinNonnaJjlGoExilCondflags

GoExitCondExPaso

ExitCond

ax,@datads,axFínNormal,!GoExiíConda1,RegCompECal,80hRegNormalal,7al}0RS1ECdx,Reges\VrordRegO

al,lRS2ECdx,RegpsWordRegO

al,2RS3ECdx,RegSsWordRegO

al,3RS4ECdx,RegDsWordRegO

al,4

;el código de esla insínicción es¿alterado anteriormente

Page 175: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEFURAJkSM , , _ , - .

jne RS5ECtnov dXjRegFsjmp WordRegO

RS5EC: mov dx,Reggs

WordRegO:mov ahjRegCompECjmp WordReg

RegNormal:mov ah,aland a 1,7cmp al, Ojne R1ECmov EdXjRegAxjmp short RdyVal

R1EC: cmp al,ljne R2ECmov Edx,RegCxjmp short RdyVnl

R2EC: cmp al,2jne R3ECmov EdXjRegDxjmp shortRdyVal

R3EC: cmp al,3jne R4ECrnov Edx,RegBxjmp short RdyVal

R4EC: cmp al,4jne R5ECmov EdXjRegSpjmp shortRdyVal

R5EC: cmp al,5jne R6ECmov Edx,RegBpjmp short RdyVal

R6EC: cmp al,6jne R7ECmov Edx,RegSijmp short RdyVal

R7EC: mov Edx,RegDiRdyVnl: test ah,18h

jnz WordRegand ah,8and ValCompECjOfEh ¡recortar a 8 bits el valor de comp.and Edx,0ffh ¡eliminar MSByte del registrocmp al ,4

Page 176: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEHJHAJ^M

jb WordRegjne S5ECmov dl3byte ptr RegAx+1jmp short WordReg

S5EC: cmp al,5jne S6ECmov dljbyte ptr RegCx+1jmp short WordReg

S6EC: cmp al,<5jne S7ECmov dl,byte ptr RegDx+1jmp short WordReg

S7EC: mov dl,byte ptrRegBx+1jmp dwordreg

WordReg:test ah,16jnz dwordregand edxíOfetíh.and valcompeCjOfñíh

dwordreg:m ov Eax, Val CompECcmp byte ptr TipoCompEC, 1je Desigcmp Eax,Edx ¡comparar el registro con el valorje ExitCondjmp ExPaso ;ExUmq

Desig:cmp Eax,Edx ¡comparar el registro con el valorjne ExitCondjmp ExPaso ;ExUniq

ExitCond;mov ax,@datamov ds,axles dx,XferProv ¡restaurar XferAddr (9/12/96)mov worcl plr XferAddr, dxmov word ptr XferAddr-l-2,esmov corneojmp dword ptr XferAddr

exCond endp

Page 177: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE lí - DEPUHA-ASlvr H - 156

pubiic AddBrkPtAddBrkPl proc neari;Este procedimiento añade un breakpoint a la tabla, de no haber existido;antes uno en Ja dirección indicada o con el nombre indicado, caso contrario,¡elimina dicho breakpoint para crear uno nuevo.3

¡Entrada: DS:S.t apunta al nombre del breakpoint (10 caracteres; siempre, forzados final); DX:BX dirección absoluta del breakpointi;Salida: CX número del nuevo breakpoint; CY sel si hubo error, excediendo el límite de 255:

xor cl,cl ¡referencia por dirección, a DelBrkPtBorraB: cali DelBrkPt ;busco y elimino de la tabla al breakpoint

jnc BorraBmov cl,l

BorraN: cali DelBrkPt ¡eliminar también los de nombre igualjnc BorraNpush ajípush sipush espush dicidmov ax,@datamov es,axmov edijOfíset TablaBrkmov al,l ¡número de breakpoint

SrchFl: cmp byte ptr es:[di],O ¡fin de tabla?je FinTabadd di, 16inc aljz ErrAdBr ¡si se llega a 256, errorjmp short SrchFt

FinTab; stosb ¡guardar en la tabla el numero del brkpt.mov ah,almov al, 1,stosb ¡marco activo al nuevo breakpointmov ex, 10rep movsb ¡poner el nombre en la tablamov cl,ah ¡parámelro de retornoxor ch,chmov ax,bx ¡guardar dirección en tablastoswmov ax,dxstosw

Page 178: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - DEPimjVASM 1 1 _ 157

cíejmp short Fin AdBr

ErrAdBnstcFinAdBr:pop di

pop espop sipop axretn

AddBrkPt endp

public DelBrkPtDelBrkPl proc near;

;Este Procedimiento elimina un breakpoint de la tabla.:

¡Entrada: si CL - O entonces; DX:BX dirección absoluta del breakpoint por eliminar; si CL o O entonces; DS:SI apunta al nombre del breakpoint por eliminar3

¡Salida: CY si el breakpoint no estaba en la tabla

push axpush expush sipush dipush dspush escidmov ax}@datamov es,axmov edi, offset TablaBrk

SrchBrk:cmp byte ptr es:[di],0je FinTablacmp c],0 Deferencia por nombre?jne SrchNam ;si.cmp es:[di+12],bx ;nojne NoEsEstecmp es:[di+] 4],dxjne NoEsEstejmp Encontrado

SrchNam :push sipush dipush exinc diinc di ¡apunto al nombre en la tablamov ex, 10

Page 179: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EEPURA-ASM H-158

diah,alFinSrchNamCmpNam

cx,0exdisiEncontrado

CmpNam: lodsbinov ah,es:[di]inccmpjneloop

FinSrchNam:cmppoppop

POPJe

NoEsEste:addjmp

Fin Tabla:stcjmp

Encontrado:movaddmovmov

MovTab: cmp

short SrchBrk

shortFinDlBrk

si, disi, 16ax,esds;ax:

byte ptr [si],0YaBon*ado

lodswdecstoswmovrepjmp

YaBotrado;movsbcíe

FinDIBrk:poppoppoppoppoppopretn

DelBrkPt

al

ex, 7movswshort MovTab

;ajustar el número del breakpoint;una vez encontrado el brkpt, eliminarlo

;moviendo hacia atrás el resto de la tabla

jmover el fín de tabla

esdsdisiexax

endp

Page 180: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEPOHA-ASM Jf _ 559

publjc TogBrkPtTogBrkPt proc near

;Esíe Procedimiento invierte el. estado de un breakpoint de la tabla.

5

^Entrada: si CL = O entonces; DX:BX dirección absoluta del breakpoint; si CL o O entonces; DS:SI apunta al breakpoint5

;Salida: CY si el breakpoint no estaba en la tabla3"

push axpush exptish sipush dipush escidmov ax,@datamov es3axmov edi, offset TablaBrk

EncBrk; cmp byte ptr es:[di],0je FinTablaBcmp el,O Deferencia por nombre?jne EncNam ;sicmp es:[di+12],bx ;nojne NoEsEsteBcmp es;[di+14],dxjne NoEsEsteBjtnp EncontradoB

EncNam: push sipush dipiish exinc diinc di ;apunto al nombre en la tablamov ex, 10

CmpNom: lodsbmov ah,es:[di]inc dicmp ah,aljne FinEncNamloop CmpNom

FinEncNam:cmp cx.,0pop expop dipop si

Page 181: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DEPURA-ñSM

je EncorUradoBNoEsEsteB:

add di, 16jmp sbort EncBrk

FinTablaB:stcjmp sb ort FinHabBrk

EncontradoB:xor byte ptr es;[di+l],l ;toggle el breakpoint

EinHabBrk:pop espop dipop sipoppopreta.

TogBrkPt endp

public ExTotalexTotal proc near3

;Este procedimiento ejecuta desde lít dirección de inicio indicada (inclusive);hasta encontrar alguno de los breakpoints listado en la tabla. Si no hay;breakpoinís3 se ejecuta hasta el fín del programa.3

jEntrada: Reglp; RegCs; Deben contener la dirección absoluta de la; instrucción desde la que se quiere ejecutar.; XFERADDR: Debe contener la dirección absoluta donde debe; transferirse el control una vez finalizado este; procedimiento,; TablaBrk Tabla de breakpoints. Cada, uno es un registro; de 16 bytes, y el final de la tabla es un O,; La estructura de cada registro es:i; Offset Longitud Contenido; O 1 Numero (1 a 25 5); 1 1 Estado (1 =hab, O = desh.); 2 10 Nombre (forzado a 10); 12 4 Dirección absolutai;IMPORTANTE: Este procedimiento debe invocarse mediante un JMP, y NO¿mediante un CALL.

cidmov ax,@datamov ds,ax

Page 182: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - DEPURAOS»! j_| _ jg¡

mov ah,62h ¿encontrarla dirección demiPSPint 21hmov PSPChildjbx ¿Preservarla, asumiendo que este es un child

mov ax.@datamov ds,axles bx,XferAddrm o v word ptr XferProv, bxmov word plr XferProv+-2,esmov dword ptr XferAddr,offset AftPrimlnstmov word ptrXferAddr+2,cs

jmp ExUniq ¿ejecutar la primera instrucción por si había¿un breakpoint allí.

AftPrimlnst:les bXjXferProvmov word plr XferAddr}bxmov word pIr XferAddr-f-2,escmp FinNorm al, ,1jne ' NoAcabojmp dword ptr XferAddr

NoAcabo:mov edx, offset AfterGoTotcali SetTerm ;por si hay un EXI.T, fijo dirección de tenn.mov esijOÍTset TablaBrkmov edi, offset StorePrv2

Prsrv: cmp byte ptr [si],0je FinPrsrvcmp byte ptr [sv+l]30je NxtBrkPt ¿ignorarlo si esta deshabilitadomov bx,[si+12]mov es,[si+14] ¿obtener dirección del BrkPtmov al,es:[bx] ;presejvar lo que hay allímov [di]}almov byte ptr es;[bx]50cch ¿colocar un breakpoint (INT 3)inc di

NxlBrkPt:add si, 16jmp short Prsrv

FinPrsrv:mov ax,3503h ;getvector 3int 21.hmov ax,@datamov ds,axmov word plr vector25bxmov word ptr vector2+2, es ¿preservar vector origin almov ax,cs

Page 183: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - H - 162

movmovmovintmovmovmovmovmovmovmovmovcalidb

GoTotTp:dwGoTotCs:dw

AíterGoTot;pushpushpushmovmovmovmovdecmovmovmovpoppoppopcalicidmovmovmovmovmovintcmp

Je

calicalimovmovcali

as,axeclx} offset AfterGoTotax,2503h ;poner como vector 3 la dirección de AFr

21hax,@datads,axEaXjRegTp ¡preparar ejecuciónword ptr cs:goTotIp,axax,RegCsword ptr cs:goTotCs;axParSp3spParSs3ssloadRegsOeah ;JMP FAR

?

?

;aqui se pasa el control luego del breakpointaxbpdsax,@datads,axbpjSp^[bp+^l ¡obtenerla dirección de retornoax ¿ignorar el breakpointword ptr pointernxr,axaxj[bp-f8]word ptr pQÍnternxH-2,ax ;preseivar esta direcciónds

bpaxstoreRegs

aXj@datads3axsp,ParSpss,ParSsah,62h21h ;obtengo dirección de PSP actualbXjPSPChild ;es este un proceso hijo?EsHyo2SavePspChild ;no, preservar parámetros del. PSPReduceLeve] ;bajar de nivelax,@datacls,axRestPspChild ¡restaurar parámetros del PSP

Page 184: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APEKDTCE K - DEWJKAASM

mov FmNormal,! ¡mostrar mensaje de fin de procesojmp sn orí- RestBrk

EsHijo2:mov ax,word ptr pointernxt ;poner la dirección de la nueva insl".push axxor cax,eaxpop axmov RegIp5Eax ;conio resultadomov ax,word ptrpointernxl+2mov RegCs,ax

RestBrk:mov edi,ofíset StorePrv2mov esijOffset TablaBrk

Rstr: cmp byte ptr [si],Oje FinRslrcmp byte ptr [si+l],0je NxtBrk ¡ignorar el brkptsi esta deshabituadomov bx,[si+I2]mov es,[si+14]mov al,[di] ¡restaurar lo alterado por los breakpointsmov es:[bx],alinc di

NxtBrk; add si, 16jmp short Rstr

FinRstr:Ids dx,vector2mov ax,2503h ¡restaurar vector 3int 21h

finj:mov ax3@dalamov ds,ax

jmp dword ptr xferaddr ¡finalizar

exTotal endp

public ExlnsExlns proc near

3

¡Este procedimiento ejecuta una instrucción no perteneciente al código.3

¡Entrada: DS:SI apunta a un asciiz que contiene el mnemotécnico; de la instrucción por ejecutar¡ XFERADDR punto de transferencia al finalizar.¡Debe ejecutarse mediante JMP.!

push ds

Page 185: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDICE lf - DEL'URAASIVt li-164

pushmovmovmovmovmovmovmovmovmovrepmovmovmovmovpop

POPcalijemovmovlesmovmovmovmovpushjmp

AftExTns:popmovmovlesmovmovmovcmpjnemovmovaddcmpjnemov

RestCod:movmovmov

siax,@datads,axes,axEsi,RegTpds,RegCsedi, offset PrCodlnses:[di+103,sies:[di+12],ds ¡preservar RegCs,RegIpcx34movsw ¡preservar lo actual en RegCsrRegTpax,esds,axEdi,RegTpes;RegCssidsassem ¡ensamblar, CX tiene la long. del cod. generadoFinExInsax,@datads,axax,XferAddrword ptr XferProv,axword ptr XferProv-f- 2, esdword ptr XferAddr} offset AftExTnsword ptr XferAddr+2,csexExUniq

exax,@datads,axaXjXferProvword ptr XferAddr,axword ptr XfbrAddrt-2,esax,word ptr[PrCodTns-!-.1.2]ax,RegCsResTCodax.word ptrrPrCodIhs+.l01j i, u j

dx,axax,cxEax,RegTpReslCodRegTp,Eclx

esi, offset PrCodTnses,word ptr[PrCodIns+12]di,word ptrfPrCodIns+10]

Page 186: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFENDICE H - DKFURAJWit

mov ex, 4rep movswcíe

FinExTns:jmp dworcl ptr xferaddr

ExTns endp

public AcortaMiMemAcortaMüVIem proc near

tí-] 65

;Este procedimiento reduce la memoria localizada para el proceso padre a;MyLenght párrafos, para dejar memoria libre,; CY set si hay error.3

movmovmovintmovmovmovmovintreln

ax,@datads,axah,62h ;21hPSPParetrl,b,\eSjbxbx3myLengthah,4ah21h

obtener dirección de mi PSP

;acortar la memoria que utilizo

AcortaMiMem endp

public InstHnndler<53InstHandler63 proc near

¡Este procedimiento instala elHandler de servicio de la interrupción 63, de;no estar ya instalado, y ademas contiene el handler.

movmovmovmovintmovmovmovmovmovmovint-

Yalns: retn

ds,axaXjSQQQh ;preguntar si ya esta instalado el handlerax,3563h ;no, hacer un getVecíor para preservar el21h ;vector originalworcl pü* Vector2F+2,esword ptr Vector2F,bxclx, offset Handler2Fax,csds,axaXj2563h ;SetVector de mi rutina21h

Handler2F:

Page 187: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE íí - 11-166

cmp ah,80hje miópush axpush dsmovmovmovmovmovmov word ptr cs:[salto+3]}axpop dspop ax

;esíe es e] servicio a la interrupción

ax,@datads,axax,word ptr Vector2fword ptr cs:[Sa1to+l],ax

ptr Vector2f+2

Salto: dbdd

Oeah

;si, fin

;es un reqyiest de existencia?

mió: cmp . a],0f8h ¡función reservada?jb noReserviret

noReserv:or al, aljnz noRequestmov aljOffh ;si, decir que ya esta instaladoiret

NoRequest:jmp ChildProc ¡devolver control

mstHandler63 endp

public SavePspChildSavePspChiJd proc nearI

¡Este procedimiento preserva la segunda mitad delPSP del pi

pushpushpushpushpushpushmovmovmovmovmovmovreppoppop

axexsididsessi,8Ghedi, offset PrsrvPspax,dscs,axds,PSPChildcx,40hmovswesds

Page 188: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE 11 - DHL-URAJVSir

pop dipop sipop expop axretn

SavePspChild endp

public RestPspChildRestPspChild proc near

H- 167

¿Este procedimiento restaura la segunda mitad del PSP del Cliilcl.

movmovmovmov,repretii

esi, offset PrsrvPspes;PSPChilddi,80hcx,40hmovsw

RestPspCbild endp

public reduceLevelReduceLevel proc near

;Este procedimiento ejecuta Child486.exe, que simplemente devuelve al control a;ChildProc, de forma que se baja el nivel a procedimiento bijo. Restaura los;regístros a sus valores iniciales. Retoma CY=1 si por alguna razón no es¿posible correr Child486.exe,

movmovmovmovaddmovxormovmovrepmovmovmovmovmovmovmovmovint

ax3@datads,axes3axax,PSPChüdax,10hds,axsi, siedijOffset PrsrvPrgcx,10h ¿preservarlo que había antes desdemovsw ;PSPChüd+10:0, 32 bytesaxsesds,axCommSeg,axedx, offset ChiJdNameebXjOfísetParBlockax34bOOhParSs,ssParSpjSp ¿preservo Stack21h ;EXEC!

Page 189: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE TE - DEPURA-ASM I I -168

movmovmovmovretn

ChiMProc:movmovmovmovmovaddmovmovxormovrepmovintmov

FinRedLev:movmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmov

ax,@data ;E1 conlrol no se transfiere si hay error, yds,ax ;viene aqui, asi que recupero Stack y retomo.ss,ParSs ;Notese que CY es 1 en este punto, por el fallosp,ParSp ;de la función del DOS.

ax,@datads,axss,ParSssp,ParSp ;Recuperar Stackax,PSPChiklax,10hes,axesi, offset PrsivPrgdi, dicx,10hmovsw jRestaurarlo alterado debido alEXECah,62h ;encontrar la dirección del PSP de] child21h ;processPSPChilc^bx ;Preservarla

ax,RegGs!nicRegGs3axaXjRegFsmicRegfs,axEaXjRegTpInicRegTp,Eaxax,RegCsInicRegCs,axEaXjRegSpInicRegSpjEaxax,RegSsTjiicRegSs3axEax,RegBpInicRegBp,Eaxax;RegDsTnicRegDs,axaXjRegEsTiiicRegEs3axEax,RegDiInicRegDisEaxEaXjRegSilnic.RegSi,EaxEax,RegDxTiiicRegDx3EaxEaXjRegCxInicRegCx3Eax

Page 190: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - DEL*Un,VAXM-

mov EaXjRegBxTnicmov RegBx,Eaxmov EaXjRegAxmic,mov RegAx,Eaxmov ax,flagsTnicmov flags,axpush eaxmov eax,eílagslnicmov eflags,eaxpop eaxretn

ReduceLevel endp

public SefTermSetTerm proc near

;Este procedimiento fija la dirección, de terminación del proceso hijo.3

;Entrada: DX = dirección de íenninaciónj -

mov axsPSPChüdmov es,axmov es:[10]jdxmov es:[12],csreín

SetTerm endp

public LoadExeLoadExe proc near5 ~~ ~

;Esle procedimiento carga el archivo cuyo nombre se pasó como parámetro;a este programa en el PSP del proceso padre, al final del PSP del hijo.;Luego calcula los valores iniciales de los seudoregistros, y pasa los;siguientes parámetros al PSP del hijo. CY es 1 si se pasó un nombre de¡archivo incorrecto o si hubo problemas al cargar el archivo.;Obtiene la posición del Load Module dentro del archivo que se carga.3

;Ademaíí se reloma la siguiente información en FLoadExe:; O si es un archivo .exe; I si es un archivo .cora; 2 si es un archivo de datos; 3 si no se se especificó un nombre de archivo; 4 si el archivo especificado no existe; 5 si no se pudo cargar el archivo .exe^ _

mov aXj@data

Page 191: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ir - DEPURAJVSMU - 170

movmovmovmovmovmovmovcmp

Je

movcidrepecmp

Je

decincmovmovmovmovmovmov

XferName:jodsbcmp

ds,axParSpjSpParSs,ssax,PSPParentes,ax ;ES apunta al PSP del padre.di,81h ;voy a buscar el nombre del archivo.cx37fhbytep1res:[80ri]}0noParamal,' '

scasb ¡encontrar el primer elemento diferente de ' 'cx;0NoParamdiexsi, diax,esds,ax ;DS apunta al PSP del padreax,@dataGs,axcdij offset FileName

al,"noEndNendNombreArch

noEndN; stosbdec exjz NotFound

shortxferNamejmpNotFound:

mov

NoParam:mov

byte plr FLoadExe,4SinProgi'amaEx e

byte ptr FLoadExe33S inProgramaExe

LoadNoExe:movmovmovmovlodsbcmp

ds,dxds^PSPParentsi, ex

ni ' 'ai,.jne NoComlodsb

Page 192: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ATENDICE It - DEPURA-ASMH - 17.1

and.cmpjnelodsbandcmpjnelodsbandcmpje

NoCom: movmov

al,0dfhal.'C1

NoCom

al,Gdfhal,'Q'NoCom

a1,QdfhaVM'SiCom

ds,dxbyte plr FLoadExe,2

jmp short LoadFileSiCorn; mov

movLoadFile:

movmovinljemovmovmovmovmovmovintjemovmovmovmovmovint

ds,dxbyte ptr FLoadExe, ]

edXjOffseí: FileNameax;3d40h21hNotFoundFHandle,axbx,axdx,100hc^Qfflíhds,PSPChüdah,3fh21hNotFoundbx}@dafads}bxFileSize,axbx,FHandleah,3eh

;abnr archivo

;leer archivo

2] h ;cerrar archivo

S i nProgramaExe:movmovmovmovmovmovmovmovm ovcmp

ax,@datads,axss3ParSssp,ParSpExeFlagjOFilePtr,0aXjPSPChild

;posicionar pointer al inicio de archivo

RegTpInic^lOOhFLoadExe, 2

Page 193: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

lí - DE!.'IJHAj\SJVtf l - 112

jnemovmOV

addIp.1.00: mov

movmovmovmovmovmovxormovmovmovmovmovmovmovmovcmpjb"

Jestc

IplOGRegIP)0RegTpInic,0aXjlOhRegCs3axRegCsInic,axRcgDs,axRegEs,axRegSs3axRcgFs,axRegGSjaxEaXjEaxRegAXjEaxRegBx,EaxRegCx.EaxRegDx,EaxRegSi,EaxRegDi,EaxRegSpjEaxRcgBp,EaxFLoadExe,3NoErrLEBorralnCod.

BorraTnCod:movinovmovxorrep

NoErrLE: cíe

finload

es,RegCsEdi,RegTpex, .16ax,axstosw ;bon:ar ijiicio del código

.fin load

endNomrjreArch:rnov d1,ds:[80h] ^Longitud de parámetros en PSP padrexor dh,dhmov ax,@daUmov ds,ax ¡Restauro DSinc exm ov NBytesFal I an, exxor al, alstosbdec sim ov starl Nam e} sisub si,81hsub dx,si

Page 194: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Ai'EKDICE II - I I - 173

lengritName,dlmovmovmovmovmovmovmovmovmovmovmovrepxor

Complet:cmpjaeslosbjmp short Complet

ListoPSPChiJd:

ax,PSPChilcles}ax ;ES apunta al PSP del hijoaljlenghtNamees:[8Qh]}alsijStartNamedi,81hcXjNBytesFaltanax3PSPParent:ds,ax ;DS apunta al PSP del padremovsbal, al

di;100hListoPSPChild

m.ovmovsub

Quedase:

ds,dxsi,StailNamesi,4 ¡apuntar a la extensión del archivo

mov dSjPSPParentmov ex, silodsbcmp al,'.'je bienPjmp LoadNoExe

BienP: lodsband al,0dfhcmp al,'E'je BienEljmp LoadNoExe

BienEl: lodsband al,0dfhcmp al,'X'je BienXjmp LoadNoExe

BienX: lodsband a],0dfhcmp al,'E1

je BienE2jmp LoadNoExe

BienE2: mov ds,dxmov edx,offset FileNamemov ax,3cWOh ;Abrir archivoint 21h

Page 195: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE 1C - U - f 74

ncjmp

bienS: movmovmov.movmovintjncjmp

bien4: movmovintjncjmp

bien5: movcmpjemovmovmovsubjmp

BienL: movpiishxorpopmovmovpushxorpopmovmovmovmovshladdmovmovmovmovaddmovmovmovmov

bien 3NotFoundFHandle,axbx,axedx, offset nvAreacx,512ah,3fh21h ¡Leerlos prímeros 512 byles del archivobien 4NorFoundah,3ehbXjFBandle ¡Cerrare! archivo21 hbien 5NotFoundesi, offset rwAreaword ptr [si],5a4dhBienL ¡Verificar la marca del Linker

ds,cxcx,StattName

ex, 4Lo adNoEx e

ax,[si-í-10h] ¡preservar en memoria los valores de Stackyax6ax,eaxaxRegSpjEaxax,[si+l,4h] ;va a controlaraxeax,eax ;una solución es "xor eax,eax"axRegTp,EAxRegTpIniCjEaxax,[si+4]el ,8ax,clnx,[si+2] ¡obtener la longitud del archivoFileSize,axax,[si-í-8]FilePtr}ax ¡posición del Load Module en el archivobx,PSPChildbx,10h ¡poner al archivo al final del PSP hijoword ptr ParBIockNew}bxword ptr ParBlockNew-t-2,bxax,dses3ax

Page 196: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ATENDICK H - DEPURAJ^SM tí. - Í.75

mov edx,offset FüeNamemov ebx, offset ParBlockNewmov ax,4bQ3hinf 21h ;EXEC, cargar el archivo sinjnc bien 6jmp NotFound

bien 6:mov ax,@datamov ds,axmov ExeFlag,!m ov esi, offset rwArea

ejecutarlo

mov aXjWord ptr ParBlockNew+2 ;Relocation factormov bx,[si+16h]add bx,axmov RegCs,bx ;Kijar nuevo valor de CSmov .RegCsTaiCjbxmov bx,[si+0eh]add bx,axmov RegSs,bx ;Fijar Nuevo valor de SSmov Eax,RegSpmov RegBpjEaxmov aXjPSPChildmov RegEs,ax ;Crear los seudoregjslrosmov RegDs,axxor ax,axmov RegFSjax ;es aquí que se ebje con que valor inicienmov RegGs,ax' ;Ios registrosxor EaXjEaxmov RegAXjEaxmov RegBx,Eaxm o v RegCx,E axmov RegDx,Eaxmov RegSijEaxmov RegDi,Eaxm ov FLoa dExe, 0cíe

finload:mov EaxsRegTpmov RegTpTniCjEaxmov ax'jRegCsm ov RegCsTnic, axmov Eax3RegSpmov RegSpInic,Eaxmov aXjRegSsmov RegSsInic}axmov Eax,RegBpmov RegBpTniCjEaxmov ax,RegDs

Page 197: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ATENDICE II - DEPUHAASM ft - 176

movmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovpushmovraov

POP

retnLoadExe

en el

RegDsInic,axax3RegEsRegEsTnic,axax,RegFsRegFsInic,axax,RegGsRegGsTnic,axEax,RegDiRegDiTniCjEaxEax,RegSiRegSilníCjEaxEax,RegDxRegDxTniCjEaxEax,RegCxRegCxmic,EaxEax3RegBxRegBxIniCjEaxEax,RegAxRegAxTntCjEax41 *fcj -l.J <l £¿j5

t í ílfrC1 T-m f* i \.r.1. J íT-bLO J.J I1O. (l*\x

eax,efíagseflagslnicjeaxeax

endp

Page 198: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AI'IÚVDICK II - J)KSliNS.AS.\ H - 177

MODULO DESENS.ASM

;Programa desensamblador.

.model small

.486.data

segreg db (E,C,S>D,1segregl db 'F,1segreg2 db 'G,'

; Mnemotécnicos de las instrucciones del Coprocesador Matemático

operOFOOdb ISLDTJS7R}LLD7J???)VERRJVERW31

operOfOldb rSGDT>SIDT)LGD7)L!D7,SMSWJ???,LMSWJNVLPG,1operOfQ2 db 1???í???1LAR,LSL,f

operOfOó db 'INVD.WBINVD^LTS»1

operGf90db 1SE70,SE7NO,SETB3SE7KB3SE7EJSETNEÍSE7BE,SE7A,SE7SÍ1

db ISE7NS)SE7PJSE7N"PSSETLÍSE7NL>SE7LESSE7G;operOfaS db IB7SB7S,BTRÍB7C3'operOfa4 db ISHiD>??7)???9???,SimD>lMUWoperOfbO db 'XADO^MPXCHG,'operOfb2 db IFSJ-GS.LSS.BTR,1operOfbS db 'BSF,BSR,'operOfb6 db IMOV2X,MOVSX>1

operOfcS db 'BSWAP,'operl db 'ADDSOMDC>SBB,AND>SUB,XOR,CMP,1oper2 db 'DAA1OAS)AAA5AAS,1operS db 1INC,DEC,PUSH,?OP>1

oper4 db 'OÍNO1CÍNCSZ,NZSBE,A,S,NSJPÍ'NP)LJGE)UEÍG1I

oper5 db IPÜSH9POP,SAH,LAH,1operó db IROL,ROR,RCL,RCR>SHL)SHKÍ???)SAR)I

oper? db lTEST)???9NOTsNEG1MUL,lMUL,DTV)rDTV;operg db 'CLC,S7C,CLI,S7r,CLD,S7D;oper9 db fJNC,DECsCALL,CALL FARSJMP)JMP FAR,PUSH,???;operpi db 'PUSHJMUL;9perpba db 'PUSHA ,POPA .BOUND.ARPL,1operpp db

Page 199: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DKSENS.ASM: H - 178

opería dboperm? dboperlea dboperxax dbopercc dboperjc dboperwai dbopercín dbopérelo dbopersl dboperm dbopenf dboperll dboperíS dboperáí dboperio dboperir dboperaa dbopería dbopérese dbopeijl dboperoio dboperios dboperlk dbopenrr dboperhlt dbopéreme dbopemop dboperel db

;Registros

regí

'MOV,???,1'LEA,1'XCHG AX,XCHG EAX,'

MM^CALL,''WAIT,''CMPS^íOVS,''STOS,'

'SCAS,LODS,''RETN,'-RETF,'

TNT03,1

ONT ,'INTO,''IRET,1'AADjAAM,''XLAT5!

'ESC ,''JCXZ.LOOP,''OUT ,TN ,OUT DX5''JNS.OUTS,1T.OCK,1'REPE,REP,REPNE}''HT.T,''CMC,''NOP,''ENTER,LEAVE;

reg2dbdb

reg3 dbregtr db '???)???)???)TR3JTR4,TR5}1TR6ITR7!'regdr db TDROJDR1,DR2JDR3I???)???)DR6IDR751

regcr db 'CR05???)CR2)CR3)???) ???,???,???,'modos dbescala db '+l*í+2*í+4*,+8*J1

; Mnemotécnicos de las instrucciones del Coprocesaclor Matemático

opOOOa db T•^\DDJF^rüL;FCO]VI}FCO^IP!FSUB;FSUBR}FD^VíFD.r\'^RJf

Page 200: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE If - DESEMS-ASa-f ja-179

opOOOb db 'FADD st,FMCJL s^FCOM^COMP^SUBR sr,FSUB sVdb FDTVR st,FDJV st;

opOOla db 'FLD,FXCH st,FST,FSTPlFU)E>^1FLDCW,opOOlb db 'FNCJ^FABS, , ,FTST,FXAM, , ,FLDJ )FLDL2T)FI.DL2E)FLDPI;'

db IFU)LG2)FD^LN2,FLDZ;opOOlc db IF2XM1ÍFYL2X,FPTAN)KPATANÍKXTRACT)FPREM1,1

db IFDECSTP,FTNCSTP'FPREM,FXL2XP1IFSQRT,1db rFSINCOSJFKNDINT)FSCALE;FSINíFCOS;

opOlOa db TIADDjFIMÜJ^HCOHopOlOb db 'FUCOVIPP;opOJJa db «FILD, .FTST.HSTP, ,FLD, ,FSTP,'opOllb db TENI,FDJSIsFCLEX,FINrríFSEirPM,'oplOla db 'FLD, ,FST,FSTP,FRSTOR, }FSAVE,FSTSW,'oplOlb db 'FFREE, ,FST,FSTP;FUCOM st,FUCOMP sí,1opllOb db "FADDP.FMUUP, ^COMPP^SUBRP.FSUBP,'

dbopllla db «PUJO, ,FIST,FrSTP)FBLD,FILD1FBSTP1FrSTP)'

;Regsitros del coprocesador

regcop db 'st(0)1st(l)íSt(2)jSt(3)Jst(4)íSt(5)1st(6)jSt(7)J'

casos dbdbdbdbdbdb

;Direcci oríes

direcc dwdwdwdwdwdwdwdwdwdwdwdwdwdwdw

40h,60h)70h180h)84h)88h,8ch,90hÍ>lh198b,9ah,9bh,9ch)0a0b,0a4h30a8hOaah30ach,0b0h10c0h}0c2hí0c4h)0c6h,0c8hOcah,0cchs0cdh)0ceh30cfh30d0h)0d4h)0d6hOd7h30d8h)0e0h30e4hj0e8h}0eah;0ebh)0ecbOf0h50f].h,0f2bj0f4h30f5h}0f6bí0f?íh30feh

de la rutina de cada

oífset caseQtoSfjofíset case60ío6fs

ofTseí:case80to83,offset case88to8b}

offset' case90,offset case98to99}

offset: case9b,offset caseaOtoaS,offset casea8roa9,offset caseacToaf3

offset casecOtocl,offset casec4toc5,offset casec8toc9,offset casecc,ofEsef casece,

caso

offset case40l"o5foffset case70to7foffset case84to87offset case8cto8foffset case91to97

offset case9aofí^et case9cto9foffset casea4!oa7offset caseaatoaboffset casebOtobfoffset casec2toc3offset casec6toc7offset casecatocboffset casecdoffset* casecf

Page 201: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE ir - DESENS.ASM H - I 80

dw offset casedOtodS, offset cased4tod5dw offset casecl6, offset cased?dw offset casedStodf, offset caseeOtoeSdw offset casee4toe7, offset casee8toe9dw offset caseea, offset caseebdw offset caseectoef, offset caseíOdw offset casefl, offset casef2tof3dw offset casef4, offset casef5dw offset casef<5tof7, offset casefS tofd

¡Variables generales

memop clb O ¡indica si se direcciona memoriasib dw O ¡indica si hay el bite s-i-b para direccionamiento escalonado11 dw O ¡indica si hay redefinición de segmento12 dw O ¡indica si son datos de 32 bits13 dw O ¡indica si es direccionamiento cíe 32 bits133 dw Oaddl dw ?mne db ? ¡almacena C,E,D o S según la redefínicón del segmentoopcode db 14 dup (?) ¡contiene 14 bytes del código a desensamblarastringdw ?bslring dw ?atasír db 20 dup (?) ¡almacena temporalmente el operando

¡correspendiente a RBGatbstr db 20 dup (?) ¡almacena temporalmente el operando

¡correspondiente a MOD y R/M

.code

readarray proc near

¡Este procedimiento lee un elemento de un arreglo atfauuméricof de dirección¡especificada por DS:SL El elemento se coloca desde ES:DT; y DI se acomoda¡para que apunte a la dirección siguiente al ultirao carácter del elemento,¡Los separadores enlre elementos deben ser comas (,).

¡Entrada: CX = número del elemento en el arreglo.3

¡Salida: DI — dirección del ultimo carácter transferido + 13

push axpush expush sior ex,ex ¡primer elemento del arreglo?jz enconl: ¡si

busccoma: ¡buscar el elemento

Page 202: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

: U - DKSKN&ASMM - 181

mecmpjneJoopinc

encont:lodsbcmpjesíosbjmp

fínread;poppopPOPretn

readarray

SI

byte plTbusccorbusccoisi

a!,Yfínread

shorten

siexax

endp

a ;noa ;si, decrementar número de elemento

;apuntar al elemento encontrado

;carácteren AL;separador?

;si, finalizar transferencia;no, transferir

public convhexconvhexproc near

;Este procedimiento genera un string de 2 caracteres desde ES:DF. que¡representan hexadecimalmente al número en AL. DI se acomoda como en el¡procedimiento readarray,

¡Entrada: AL = número por convertir.5

¡Salida: Di — dirección deí ultimo carácter generado -f- 1.

push axpush exmov ah,aland ahjQfhmov el ,4shr al,clor ax,3030hcmp al,'9'jbe numaladd aVAIJ9'-J

numal: cmp ah9'9'jbe numahadd alVA-'-V-l

numah: stoswpop expop axreín

convhex endp

;4 Isb en AH

;4 msb en AL;conv. a ascii

Page 203: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - DESENS.ASa,t I I - 1 8 2

conv2hex proc near

;Este procedimiento genera un string de 4 u 8 caracteres desde ES:DI que¡representan hexadecñnalmente a la palabra apuntada porDS: SI+BX. DTse¡acomoda como enreadarray.

j¡Salida: DI - dirección del. ultimo carácter generado + 13

¡Usa: convhex

pushmovcmpJe

addshl

OtraPalabra;pushmov

primerapalabra:push axmov al,ahcali

excx,l12,0 ;es doble palabraOtraPalabrn ;nobx,2cx,.l

axaXj[si+bx]

popcali

POP

sub

convhexaxconvhexaxbx,2

loop olrapalabraadd bx,2pop ex

¡lazo a convertir la segunda palabra

retn.conv2hex endp

codSbit proc near

;Este procedimiento obtiene el número de 3 bits de los bits 3, 4 y 5 de¡BL, y lo coloca en BL. Es de utilidad para, por ejemplo, obtener reg¡en el byte de modo de dirección amiento,3

¡Entrada: BL3

¡Salida: BL = (BL and 38H)/83

push exand bl,38hmov c\3shr bl,cl

Page 204: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE 3t - DESEKS.ASM

pop exretn.

codSbit endp

copmem proc near

¡Este procedimiento genera el string de modo de dirección amiento [...]¡desde ES:DT para las inslrucciones del coprocesador

s

¡Entrada: AL = tipo de operador (Q,B,D,Q,T)

¡Salida: CX = longitud presumida de instrucción; memop = 1 si se opera con memoria3

¡Usa: modrtn, addbstr

push bxpush axmov al,''stosbmov bx, offset atbstrmov bstringjbxcali modrm ¡generar [...]cali addbstr ¡poner [...]pop axpop bxretn

copmem endp

copreg proc near3

¡Este procedimiento genera el string de registro del coprocesador¡desde ES:DT)¡Entrada: si = apunta al inicio del código de la instrucción3

¡Salida: ex = longitud presumida de instrucción; al = tipo de operador

¡Usa: readarray

push bxmov bx,Uacld bx,12add bx,13

Page 205: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE T[ - DKSEHSJXSM

mov cl3[si-t-bx-Kt] ¡cargar la paite del. código que indica;el registro

and ex, 7ptish sim ov si, offset regcopcali readarray ;poner el registropop simov al, 4mov cx,2 ¿longitud presumida de la

;instrucciónpop bxretn

copreg endp

modrm proc near3 -

;Este procedimiento genera el string de modo de direcciona miento [...];desde DSrbstring, y lo termina con 0.3

;Entrada: AL = tipo de operador (w)

5

;Salida: CX ~ longitud presumida de instrucción; memop — 1 si se opera con memoria•);Usa: convhex, conv2hex} readarray)

push dxpush bxpush axpush dipush espush dspop esmov di,bstringmov bx,Uadd bx,12add bx,Bmov dh3[si+bx+2] ;segimdo byte del opcodemov bl,[si+bx+]] ;primer byte del opcodemov bh,bland bh,0c0hmov el, 6shr bh,cl ;2 msb de dicho byte an bh (mod)mov dl,bland di,7 ;3 Isb de dicho byte en di (r/m)cmp 13,1

f I -

Page 206: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESEKS.ASM: H - 185

je Direcc32Bitcmp di ,6jne nodir ;si no fuera modo directoor bh,bhjnz nodir ;idem

mov memop,.! ;modo directo: mod=0, r/m=6mov al,'['stosb ;ponei; la dirección entre corchetesmov bx,ll ;y terminar string con 0.add bx,12add bx}13add bx,2pusíi 12mov 12,0cali conv2hexpop 12mov al,1]'xor ah,abstoswmov cx,4 ;Iong. 4 bytesa cid ex, 12

finmodrm

nodir: cmp bh,3 ¡registro a registro?jne no3 ;nomov cl,dl ;si,leer de la tabla de registrosxor ch,chpush simov si,offset regí ;poner nombre de registro en stringor al,al ;instrucción de word?jz primfila ;nocmp 133,1je modnnexcmp 12,0 ;es doble word?je moclrmex ;sim ov si, offset reg3jmp short primfila

modnnex:mov si, offset reg2 ;si

primfila;.cali readarrayxor al, alstosb ;terminar con Omov cx32add c.x-,12pop si

Page 207: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - DESEWSJVSMH-.1S6

jmpno3: mov

pushmovstosbpushmovmovxorcalipopcmpjnemovaddaddaddmovcmpjbemovnegjmp

positoffs:mov

addsgn: stosbmovcal]jmp

mdnol: cmpjnemovstosbmovaddaddaddpushmovcal]pop

endselmodrm:movxorstoswPOP

fmmodnnmemop,] ¿operación con memoriabxal,'['

sisi, offset modoscl,dl ;leer un modo de direc. de la tablach,chreadamrysibh,l ;mo<l=l?mdnol ;nobx,ll ;si, offset de un bytebx,12bx,I3bx,2bl,[si-i-bx] ¡obtener offset

bl, 127 ¡hallar su signopositoffsal,'-'blshort addsgn

al,'*1

al,blconvhex ¡incluir offset en el stringshort endselmodrm

bh,2 ;hay offset?short enclselmodrmal,'-!-' ;sij de 2 bytes

bx.11bx,12bx,13bx,21212,0conv2hex12

al,']'ah,ah

¡acabar con 0bx

Page 208: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKKDICE H - DESENSJiSM ., 1O~11- lo/

mov cl,bhxor ch,chadd cx,2 ¡long. = mod + 2add cx,12

finmodrm

Direcc32Bit: ¡Modo de direccionamiento de 32 Bitscmp di, 5jne NoDirecto ;si no fuera modo directoor bh,bhjnz NoDirectomov memop,] ¡modo directo: mod-0, r/m=5mov al,'['stosb ¡ponerla dirección entre corchetesmov bx,!! ¡y terminar string con 0.add bx,12add bx,33add bx,4push 12mov 12,0cali conv2hexsub bx,2cali conv2hexpop 12mov al,1]1

xor ah,ahstoswmov cx,6 ¡long. 6 bytesadd cx,12 ¡sumar uno debido al prefijo de doble palabra

;fínmodrm

NoDirecto:cmp bh,3 ¡registro a registro?jne NoRegaReg ;nomov cl,dl ¡si,leer de la tabla de registrosxor ch,chpush simov si,offset regí ¡poner nombre de registro en stringor al,a] ¡instrucción de word?jz NolnstWord ¡nocmp 133,1je NoModRinExcmp 12,0je NoModRmExmov si,offsetreg3jmp short NolnsWord

NoModRmEx:

Page 209: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS-ASSf H - 188

movNoTnstWord:

calixorstosbmovadclpopjmp

NoRegaReg:movpushmovstosbmovcmpjnemovmovmovcaliandandmovshrpushmovmovxorcalicmpjecmpjnemovmovcalijmp

Nolndef:movmovcalimovmovcalipopjmp

si,oiTser regz ;si

readarrayal, al

germinar con 0cx,2cx,12si

finmodrm

memop, 1 ¡operación con memoriabxaVC

sib30dl,4NoHaySibsib,ldl,dh ;SihayS-i-bbl5dlcod3bitdl,7dh,0c0hel, 6dh,clsisi, offset reg3cl,dlch,chreadarraydh,0 ;Si Índice es 4 y escala no es 0 entoncesNolndef ;]a dirección efectiva queda indefinidabl}4Nolndefsi,ofísetoperm?ex, 3readarrayshort VerDesp

si, offset escalacl,dhreadarraysi, offset reg3cl}blreadarraysishort VerDesp

Page 210: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - TDESENS.ASM H - 1 S 9

NoHaySib;pushmovmovxorcalipop

VerDesp:cmpjnemovaddaddaddaddmovcmpjbe

sisi, offset reg3cl,dl ;ltch,chreadarraysi

bh,l ;mdnoeslbx,ll ;:bx,12bx,13bx,sibbx,2bl,[si-l"bx]bl,127 :positoffsl

un modo de direc. de la tabla

;mod-l?;no, offsef de un byte

;obtener offset;hallar su signo

mov al,'-'neg bljmp short addsigno

positoffsl:mov al,'+'

addsigno: stosbmov al3blcali convhex ;incluir ofíset en el stringjmp endselmodrml

mdnoesl:cmpjnemovstosbmovaddaddaddaddpushmovcalisubcal!POP

endselmodrml:mov al,1]'xor ah,ah

bh,2 ;hay ofíset?endselmodrma!5M-'

bx,Ubx,12bx,13bx,sibbx,41212,0conv2hexbx,2conv2hex12

;si, de 2 bytes

Page 211: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE ir - DESENS-ASM

stoswpop bxmov cl,bh

ch,chcx,12

H - 190

¿acabar con O

xoraddaddaddcmp

addfmmodrrn:

poppoppoppoppopretn

modrm endp

cx,2cXjSÍbbh,2

.finmodrmcx,2

esdiaxbxdx

;long, — mod 4- 2

modregrm proc near

;Este procedimiento genera el stiing de modo de dirección amiento y su¡registro operador en el orden apropiado a partir de ES:DIy acomoda DI;como en readarray. Utiliza DS:astringy DS:bstrmg

¡Entrada: AH = dw (par de bits de dirección y tipo de operador)

¡Salida: CX = longitud de instrucción; AL = \ (tipo de operador)¡ memop = 1 si se ha operado con memoria.

¡Usa: motlrm, codSbit, readarray, orderj

push bxpush clxpush sipush espush dspop esmov aJ7ahand aí,l ¡obtener wcali modrm ¡obtener [...]cal} cod311inc ¡obtener cod del byte de modo de dirt

mov si,offset regí ¡leer reg de la tabla según wor al. al

c

Page 212: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKKD1CE H - t\

JZcmpjemovjmp

Tnodregrmex:bringreg:

pushpiishmovmovxorcalimovan,dpoppoppopcaliaddpopPoppopreln

modregrm

bringreg12,0modregrm exsi} offset reg3shoit bringreg

mov si, offset reg2

exdidi,astringcI3blch,chreadarraydh,ah ;ob1ener d en DHdh,2

diexesorder ;poner en orden [...] y su. operador

ax,Í2sidxbx

endp

defectmem proc near

;Esle procedimiento extrae los bits 6 y 1 del segundo byle del opcode;sirve para ias insirucciones del coprocesador

iSalida:di = ((2do byte del opcode) and OCb)/64

push expush bx:mov bx,Íladd bx,12add bx,13mov dljfsi-i-bx-i-J.] ;b1 = segundo byet deimov c],6shr di, el ¡dividir para 64-pop bxpop exre tíi

deteclmem endp

opcode

Page 213: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFKTíDlCE ir - DE3EN5-ASaE j.j _ j 07

modregrnú proc near

¡Este procedinuento genera el stríng de modo de direccionaiiliento y su¡registro operador en el orden apropiado a partir de ES:DIy acomoda DT¡como en readarray. Utiliza DSrastring y DS.'bstring

¡Entrada: AH = dw (par de bits de dirección y tipo de operador)

¡Salida: CX = longitud de instrucción; AL - w (tipo de operador)¡ memop = I si se ha operado con. memoria.?¡Usa: modmij codSbit, readamy, order

push bxpush dxpush sipush espush dspop esmov al,ahand al,,1 ¡obtener wpiish axmov 133,1cali modrm ¡oblener [...]mov 133,0calí cod3Ilinc ¡obtener cod del bj'te de modo cíe dinmov al,lmov si,offset regí ¡leer reg de la tabla según wmov al,lor al, alpop axjz bnngreglcmp 12,0je modregrmexlmov si, offset reg3

short bringregl

modregrmexl:mov si, offset reg2

bnngregl:push expush dimov di, asi ringmov cl,bl

Page 214: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE J-r - DESKTTS.ASM: H-193

artdpoppoppopcali

POPpop

POPreln

modregrml

xor ch,chcali readarraymov dh,ah

dh,2diexesordersidxbx

¡obtener d en DH

;poner en orden [...] y su operador

endp

order proc near

;Este procediíiúento establece el orden en que deben ir astring y bstn'ng en;el nemotécnico (a partir de ES:PJ) según e) bit de dirección (DH) y los¡coloca, acomodando después DI como en readarray.í

¡Entrada: DH = bil de dii'ección

j;TJsa: addaslr, addbsír

¡poner un espacio

¡agregar el string almacenado en atastr

¡agregar ei. string almacenado en atbstr

push axmov ai,''síosb

or dh,dhjz bfirsfcali adcbstrmov al, ystosbcali adclbstrjmp sh ort fin order

bfírst; cali addbstrmov al,1,'stosbcali addastr

finorder:pop axretn

order endp

acicisír proc nenrj ™¡Este procedimiento coloca un string apuntado por DS:SI terminado en O

Page 215: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE Jt - DESEKSASM H - 1 Q J

;en ES;DI, acom.odando DI como en readarray.5

push sipnsh ax

xfer: lodsbpush sipush didec simov di, sipush axmov al, Ostosbpop axpop dipop sior al, al ;fin de string?jz .fin addstr ;sistosb ;no, continuarjtnp short xfer

finaddstr:pop axpop siretn

addstr endp

;í_os siguientes dos procedin:iientos colocan los strings apuntador por;astring o bslring desde ES:DT, acomodando DI como en reíidarray.j;Usan: addsü.-

addastr proc nearpush simov si,asíring ;apimtar a atastrcali addstrpop sireln

addasír endp

addbstr proc nearpush simov si,bstring ¡apuntar a atbstrcali addstrpop si.retn

addbslr endp

o

Page 216: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE Jt - DESETÍS.ASM: ¡-I _ 195

acodala proc near

);Este procedimiento genera un stríng de operación, de acumulador con. datosInmediatos, y lo coloca a partir de ES:DI, acomodando L>I como en readarray.3

¿Entrada: AL = w (bit de tipo de operador)

í;SalÍda: CX = longitud de instrucción

;Usa: readarray, convhex, conv2hex

5pusli bxpush dxpush simov di, al ;preservarwmov al,1'stosb ;pon.er un espacioxor cx,cx ;leer string de acumulador (AL o AX)mov si,ofl"setregl.or dl}dl ;segun wjz dalalcmp 12,0 ;esEAXje accex ;nomov si,offset reg3 ;sijmp shortdata],

accex: mov si,oñset reg2data].: cali. readarray

pop simov al,1,1stosb ;poneruna coma después del acumuladormov bx,lladd bx,12add bx%13inc bx ;ST-¡-BX apunta ai dato inmediatoor di, di ;qne es de J o 2 bytes según wjz datlcali conv2hexjmp short fínaccdaía

datl: mov al,[si+bx]cali convhex

:finaccdata:xor ex, exmov al,dl ¡recuperar wcmp 12,0je longacclmov cl,2rnov al, 2

Page 217: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE IE - OESENS-ASat , „,-- ¡yo

longaccl;add d,2adci c],alpop dxpop bxretn

accdata endp

realadr proc near

¡longitud de instrucción,

;Este procedimiento calcula la du'eccion real de un salfo relativo y la¡convierte en un slring a parlir de ES:DI, con DI come en readarray.)jEntrada: AL^w; CX = longíl^d de instrucción

;Usa: convhex

push axpush bxmov bx,llor a l a l.movcbvvjz dsplbmov

dsp.lb: add axsadclladd ax,cxpush axmov al,' 'stosbmov al,ahcali convhexpop axcali convhexpop bxpop axretn

realaclr endp

wob proc near

;apiintar al opcode; desplazamiento de un bj'le?

;si;no

¡dirección real en ax

;ponerun espacio;poner el síríng

;Este procedimiento coloca " W" o "B" en ES:DI e incrementa DI, según w. Es;util para completar instrucciones de string.

¡Entrada: AH = opcode

Page 218: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE If - DESKWS-ASB.Í jj _

¡Salida; AC~ w; CX = longitud de instrucción

mov al,ahand al,l ;AL = wpush axjnz instwmov al,'B' ;Bytejmp short adcar

instw: mov al/W ¿palabracmp 12,0je adcarmov a],'D' ;Doble palabra

adcar; stosbmov cx,l ;long = 1pop axadd ax,I2add ex, 12reta.

wob endp

datadic proc near!

¡Este procedimiento genera el string de modo de dirección amiento [...] y;un operador inmediato desde ES:DÍ. Acomoda DI como readarray .i¡Entrada : AH = opcode; DL = sw (bits de extensión de signo y tipo de operador)i;SaIJda: AL — w; CX = longitud de instrucciónj;Usa: modrtn, addbstr, conviiex

push bxmov al,ahand a1,l ¡obtener wmov bx, offset atbsírmov bslringjbxcali modrm ¡generar [..,]push axmov al,' 'stosb ¡poner un espaciocali addbstr ¡poner [...]mov al,1,' ¡poner una comastosbmov bx,H ¡apuntar al opcode

O

Page 219: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APEWDICF. K - DESKWS.ASM: 11-198

sinext:

nnbyte;

date di c

datret: ;

addaddmovcmpjnepushaddmovaddmovmovcalimovcalipopinccmpjneincmovmovcalimov: caliPoppopretaendp

proc

bx,13bx,cx ;apuntar a los datosax,[si-i-bx]12,1 ;es doble palabra?sinext ;noaxbx,2ax,[si+bx]cx,2bl,alal,ahconvhexal,blconvhexaxexdl,lunbyíe ;s-0 y w=l implica dalo de 2 byt(exbl,alal,ahconvhexal,blconvhexaxbx

near

;Este procedimiento decide si ciertas instrucciones requieren, datos, y, de;ser asi, los incluye como string desde ES:DI Acomoda DT como readarray.!

;Enírada: AH ~ opcode3

¿Salida: AL = w; CX = long. de instrucción

;Usa: conv2hex

push bxtest ah,ljz haydat ;si el Isb del opcode es O, hay datosmov cx,ljmp shott fíirdatret

haydat: mov al,1 ' ;poner un espacio

Page 220: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DKSEKS-ASM

stosbmov bx,11inc bxcali coiw2hex ¡poner datomov ex, 3

findatret:mov al,l ;w=lpop bxreln

datret endp

absoluto proc near

;Este procedimiento pone un string de dirección absoluta desde ES:DI,¡acomodando DI como readarray.

•s

¡Salida: AL = w; CX = long. de instrucción

¡Usa: conv2hex5 "*

push bxmov al,''stosb ¡poner un espaciomov bxjladcl bx,3 ¡apuntar al segundo par de bytescali conv2hexmov al,1:1stosb ¡poner dos puntossub bx,2 ¡apuntar al primer par de bytescali conv2bexrnov ex, 5mov al, 2pop bxretn

absoluto endp

cod3Uinc proc near3 '

¡Este procedimiento encuentra el código de 3 bits del byte siguiente¡al opcode en BE, Es un procedimiento auxiliar.5

mov bXjlladd bx,12acld bx,Bmov bl,[si+bx+l]cali codBbit

_ JQQ

Page 221: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DKSENS.ASIV[

retícodSllinc endp

incógnita proc near

, , _

;Este procedimiento coresponde al desensamblado de UR código¿totalmente inválido, y establece los parámetros correspondientes.5 •

mov sijOfíset openn?mov ex,]. ;???cali readnrrayxor al,al ¿terminadorstosbmov ex,! ;long.mov al,255retn

incógnita endppublic desens

desens proc near

¿Este es el procedimiento principal. Genera un. string desde ESJDl¿terminado en O, desensamblado de la instrucción apuntada por DS:ST.¿Preserva todos los registros que no transfieren parámetros,

¿Salida: CX = longitud de la instrucción; AL = tipo de operador:; O = byte (B); 1-word (D); 2 = dword (D); 3 = qword (Q)¿ 4 = T (temporal del coprocesador 80 bits): 255-indefinido

pushfpushpushpushpushpushpushcidmovmovpushpushmov

bxdxbpdssidi

bx,siax,@dataesdies,ax ¿segmento de datos (para instrucciones desensambladas)

Page 222: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS-ASM IJ - 20 1

mov di, offset opcode ; dirección de datos temporal para transferirpnstraccion (código de maquina) a desensambalr

mov ex, 14rep movsb ¡transferir instrucción al segmento de datosmov ds,axmov nddl,bx ¡transferir a "addl" la dirección de la instrucción que

;esta siendo desensambladamov si, offset opcodepush simov bx,0mov al,[si] ; transferir a "al" primer byte del código de maquina de

la instrucciónmov ahjalmov 13,0cmp ah,67h ;es dirección extendidajne NoDirec32Bitmov 13, 1add bx,13mov al,[sH-bx]mov ah,al

NoDirec32Bit:mov 12,0cmp ah,66h ;son registros extendidosjne noext ;nomov 12,1add bx,12mov al,[si+bx]mov ah,al

mov mne,0mov 13,0and ah,0e7hmov si, offset segregcmp ah,26h ¡prefijo de redef. de segmento 03,113,03,33?je short siprefmov ah,almov sijOpfset segreg2cmp ah,65h ¡prefijo de redfinición de segmento GSje shorl siprefmov si,offset segreglcmp ah,64h ;prefijo de redefinición de segmento FSjne proced ;n opref

sipref:mov 11,1 jopcode desplazado un byteand al,18hmov el, 2shr al, el ;número del segmento * 2

Page 223: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE ir - DESEK5-AXM H - 202

xoraddmovmov

proced: popmovmovaddaddmovcmpjbpoppoppushcali

JTTIP

menfe: mov

movxor

buscop: scasbjbincjmp

encontrado:popPOP

shladdpushcali

ajusfar :popcmpjecmpjepushpushpushmovmovrepnepushxorrepne

ah,ahsi,axal, [si]mne,alsimemop30bx}ilbx,12bx,13ah,[si+bx] ;opcode en ahah,0feh ¡primer byte es mayor a feh?menfe ;nodiesdicasefetoffshort ajusfar

di, offset casos ;ver en que caso está el primer byte del o¡pcocle

al,áhbx,bx

encontradobxsh orí: buscop

diesbx3lbx, offset direccdi[bx] ¡saltar n la rutina de desensamblado con'espondienie

di ¡incluir el prefijo de redefinición de11,0 ¡segmento de ser posible y necesariofinmemopjQprprefaxexdi

"VI1

cx330scasb ¡buscar un [dial, alscasb ¡buscar un nuil

Page 224: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

A1"EKDICE K - DESEHS-AS-UI I - 203

popsub

CX

ex, dincg exinc ex

movmovmovpoppoppopinc

prpref:movmovmovmovmovmov

fin : addpoppopPOP

poppopPoppopfretn

desens endp

;cx debe tener el número de caracteres que;van a moverse a la derecha para que pueda;entrar el prefijo de redefinición de seg.

push dspush espop dsmov si, didec siadd di,2stdrep movsbcidpop ds

¡preparar el movimiento¡hacia atrás

¡acomodar string

word ptr es^di-lj^S1

al,mnees:[di-2],aldi

exaxex ;long. de inst. incluye prefijo de redefinición de segmentoshortfin

ai,mnees:[di],alword pír es:[di+l],':S'byte ptr es:[di+3],0ni, 25 5cxslcx,B ;¡ong. de insínicción incluye prefijo de dirección

disidsbpdxbx

caseOío3fcmpjne

proc nearah,0fh

nocasoQf¡es el caso OFh¡no

Page 225: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

K - DESENS.ASM H - 204

mov bx, 1add bXjlladd bx,12add bx,13mov al^si+bx] ¡primer byte dei opcodemov ah,aímov bl,[si-t-bx+l] ¡segundo byie del opcodemov bh,blcalí cocBbit ¡obtener los bits 5,6,7 en bhpush axmov ai,lpush siinc sipush espush dspop esmov dx} offset atastrmov asiring,dxmov dx,offset atbstrmov bstríng,dxmov ahj3cali modrmpop espop sipop axcmp ahj2jae casof23push si ¡casos OfDQh a OfOlhmov si}offset operOFOO ¡instrucciones SLDT)ST.R)LLDT,VERR5\OiRWcmp ah30je esceromov si,orrset operOfOl ¡insíi-ucciones SGDT^IDT^GDT^IDT^MS"W

;TJVÍSW5IKWLPGescero; push ex

mov ci,bíxor ch,chcaií readarraypop expop simov ax/'síosb

¡hallar ei operando correspondiente a MOD y R/M

¡leer ei mnemotécnico

mov ax, 1cal] addbstrjmp íinGfl

casof23:cmp ah,ó

¡agrarar el operando

¡casos OF02h y 0^03h

Page 226: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKKDICE K - DESETÍ5.A5M H - 205

jae casof6mov cÍ,ahxor ch,chpush simov síjOffset operOfD2 ¡instrucciones LÁR,LSLcaü readarraypop simov ah,3push siinc sicali modregrm ;coioca desde ES:DT ios operandos correspondientespop sijmp fmOfl

casof6: cmp ah,20hjae casof2Q ;caso OFOSbniov c],ahand ex, 3piish simov sijOffset operOfí)6 ;insínicciones rNVD,WBTNVD,CLTScali readarraypop simov cx,l iiongiÍTidj no tiene operandosjmp fin Gil

casof20;cmp ahjSOhjae casofSO ;caso OF20hpush sipush exmov ex, Omov si, offset operm? ;instrucción MOV con'registros especialescal] readarraypush axmov as,1' ;Poner un espacio iuego de] mnemotécnicosíosbpop axpop expop sípush sipush axand ah,4cmp ah,4jne notrmov si,oífseí regir ;Ieer regisiros TR.jmp short leeee

notr: mov ah,al

Page 227: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFKTÍDICH 11 - DESEÍSJ\S;,t II - 206

andcmpjnemovjmp

nocr: movmov

leeee: poppushpushpush

POPmovmovxorcalimovmovandpushmovcalipoppopmovandpopcalimovpopmov

ah,lah,0nocrsi, offset regcr ;leer registros CRshortieeeeah}alsi,Qffset regar ;leer registros DR

axdiesdsesdijastring ¿obtener primer operandocl,blch3chreadarraydi3bs1ringcl,bhex,?sisijOffsetreg3 ¡segundo operandoreadarraysiesdluah ;ob1ener d en DHdh,2diorder ;poner en orden los operandoscx,2sial. 2finOñ

casofBO:cmp ah,90hjae casofPO ;caso O.F80Kpush siinc sicali case70to7f ;insírucciones de saüos condicionales de

;y 32 bitspop simov al, 1jmp fínOtoBf

cas 000;cmpjae

ah}0a0hensotaG

Page 228: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFffiíDICE H - DB5KKS.AKVÍ H - 207

pnsh si ;caso OfPOhmov svsflsetoperOSK) instrucciones SETO^ETNO^EXB^ETNB^ETE

; SETHE, SETBE, SETA,SETS, SETNS, SETP, SETNP; SEXL, SETNL, SEXLE, SETG;'

push exmov ci,ahand ex, 3 5cali reacurray ¡poner el Mnemotécnicopop expop simov ax/'síosbpush sipush espush dspop esmov ax,0inc sicali modrm ;ieei- operando correspondieníe a MOD y R/Mpop espop sicali addbstr ;poner eí operandojmp íinOfí

casofaO: cmp ah,0b0hjae casofbOpush ax ;caso OFAOhand ah,7cmp ari,2pop axjae mayora2push simov si,offset operpp ;instmcciones PUSH,POP con segmentos GS y FSmov ci,ahand ex, 7cali readarraymov sijOfrseí segregmov b],ahcali coíBbitmov c]5blxor ch,ch

;Ieer F o G a elcali readarraymov ai/S'stosbmov cx,lmov al,l

;longi.md de a instnicción de un byte

Page 229: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS.ASM(i - 208

pop sifínOfl

mayora2:pushandcmppopjnepushaadmovshrmovmovcalípopmovpushinccaíipop

mayoraS:pushpushmovandmovshrxormovcalipopmovcmpjnemov

noimul: pushinccalipoppopmovaddpush

axah,7ah,3axmayoraSsiah,8ex, 3ah,clcl,ahsi, offset opeiüfa3readarraysiahslsisimodregrmsífinOfl

;msirucciones BT,BTSÍBTR3BTC

¡poner operandos

axsiai,ahahjOahcl,ah

ch,chsi,oífset operOfa4 ; instrucción es SHLD.SIiRDjIMULreadarraysiah,la^Oafíinoünulah,3sisimodregrm ;poner operandossíax

ax,12ax

Page 230: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AOUI

pUB

panbuuiduio

soputasdo asuodí

-OHOXdíAID'aaVX sauoporujsuií

OpUUJSdü [0 JSUOdí

duifis dod

IS OUT

is qsnd1[U pUB

is dod

jssjgo'is AOUIis qsnd

JOX

AOUI

91 lie punAOUI

3lífduiopuu

duio

13QW3XB

ÍP

fll^S

couc'qt;

ig jjoqsyo

X51JAUOO

Kq+JS^B

Tí^qí^qfOU

tfyv¿'qy

duifdod :03p

duifMSOIS

AOUI

3UÍ"

duioduifout[[L'O

AOUI

PPG

AOUI

3UÍ"

duiopUB

:cou

AOIU

60Z - H 1ÍSVSMHSHO - It

Page 231: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AP-ENDICE K -H - 2 1 0

xor ch,chpush simov si, offset operQíb2 ¡instrucciones IjFS,LGS3I_,SS,BTRcali readarraypop sicmp ah,3jne no03mov al,!jmp proce]

no03: mov ah,3push siinc sicali modregrm jponer operandospop si

finOfl,

maqueó: pushandcmppopjnemovandmovshrmovxorpush

• movcalipopmovand

proce:pushinccaliPopjmp

noes6: cmpjaepushpushcmpjne•and

axah,<5ah,6axnoes6al,ahah,8cl}3ah,clcl,ahch,chsi'sij'ofísel' op<readarraysiah,al

ahs3

sisimodregrm 1sifínOñ,

ah,0chnoesaobaxex-ah}0bhnoesbah,3

;instrucciones MOVZX,MOVSX

jponer operandos

Page 232: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

-AEETiDTCE -TT - H-231.

movjmp

noesb; andmov

siOb; xorpushmovcali

POP

movstosbpoppopcmpjnemovdec

noOb:calimovstosbmovaddadcírnovcal]incmovadd

noesaob;andmovpushmovcalipopmov

procel : pushinccalípopjmp

casofcS:xor

short siQbbl,3d,blch,chsisi,offeetoperOfii3readarraysiTil,' '

exaxaKObhnobbah,]

dishort procel

addbstral,1,'

bXjlbx,Ubxscxal,[si+bx]convhexexal,l,ax,12short fínOfl

ah,3cl,ahsisi,oífset operO:íb3readarraysiah}3sisimodregirnsishort finOfl

ex, ex

¡instrucciones BSF,BSR

;poner operando

¡poner segundo operando

¡instraciones BSF,BSR

¡poner operandos

Page 233: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

PÉNDICE H - IÍESKNS.ASM: H - 2 1 2

movcalimovmovstosbmovandcalimovaddmovadd

íinOfliaddjmp

sijOffset operOfcSreadarraysi, offset reg3al,"

cl,ahex, 7readarrayax,lax,32cx,lcx,12cx,l.finOtoSf

;instrucción BSWAP

;poner operandos

nocasoOfhnov bl,ah ;opcodecali codSbit ;obíiene b iís 3,4,5 en bJ(bits 0,1,2)and ah,7cmp ah,5ja mayqueS ;bifiircar si superior (de O a 5 son sumas)mov cl,blxoi" ch,chpush simov si, offset operlcali readarray ;]ee addjOrjadCjSbbjandjSubjXorjCmp de acuerdopop si ;a elcmp ah,3 ;de O a 3 trabaja con un registro y direccionamja mayque3mov dx,oífset atastrmov astring,dxni ov dx, offset atbstrmov bsíring,dxcali modregrm ;coloca operandosjmp short :ñnOto3f

mayque3 ; ;reg con inmediatomov a^ah.and al,l ;al=wcali accdata ;genera string de datos de acc con. operando inmediatojmp short fínOtoSf

mayquc5:cmp ah,6ja mayque6 ;valor 6 es pushpush sicmp blj3ja codmq3rnov si} offset operpp ;para leer pushxor ex, ex

Page 234: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DKSENS.ASM H - 213

cali readarraymov sijOÍfset segreg ; para leer registro de segmento E o Cmov cljblcali readarraymov al^S1

síosbjrnp short fín6

codmq3; rnov si, offset segregmov cl,b1and ex, 3cali readarray ;para leer reg de seg S,Dmov aXj':S'stosw

fin6: mov ex,],rnov aljlpop sijmp short fmOto3f

mayquc6:push sicmp b!33ja cm3mov si, offset operppmov ex,! ;popcalí readarraymov sijOÍfset segregrnov cI5blcali readarray ;IeerE,S o D de acuerdo a elmov aVS1

stosbjmp short :fin7

crn3: mov si3ofíset oper2mov cl,bland ex, 3cal] readarray ;dAA,das,aaasaas de auerdo a el

fin7: mov cx,lmov al51pop si

fmOlo3f:push axxor al, alstosbpop axreta.

caseOtoSf endp

case40to5f proc near

Page 235: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APfilíDÍCE If - DESEKS-ASM H - 2 1 4

mov b!,ahand bl,18hmov el, 3shr bl,clmov cl,blxor ch,chm ov si, offset oper3cali readarray

¡instniccion.es INC,DEC1PUSHJPOP

cmp 12,1 ¡registro extendido?jne shor! noregextmov si,ofísetreg3jmp short careg

noregext:mov si, offset reg2

careg; mov al,1 'stosbmov cl,ahand ex, 7cali readarrayxor al, alstosbmov a,\,.1add ax,12mov cx.,3add cx,12retn

case40to5f endp

case60to6f proc nearmov dXjOffset atastrmov astríng,dxmov dx, offset atbsírmov bstríng,dxcmp ah,68hjb mena68rnaya6bcmp ah,6bhja m.ena68maya6bmov cl,ahand cx,lpiish siinov sijOfísef operpicali readarraypop simov ex,.!mov dl,ahand ah,ljnz simodregrm

;no•

¡poner operando

¡instrucciones PUSH}1MUL

Page 236: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - I)ESKNS.AS1WH - 2 1 5

addmovtestjnzmovaddjmp

simodregrm:addcalipushrnovmovstosbPOP

nomodregrm:andpushaddmovaddaddmovanclJnZcmpjnepushaddmovaddmovmovcalimovcalipop

sinextl :incmovmovcalimov

unbytel ;inccalipop

cx,12al,0

dl,2short nomodregrm ¡solo tiene un

a1,lax,12short nomodregrm ;solo tien.e un

ah,2

operando

operando

modregrm ¡poner primeros operandosaxah,alal,',' ¡poner una coma

ax

dl,2axdl,lbx,U ¡apuntar al opcodebx,13bx,cx ¡apuntar a los datosax,[si-í-bx]dl,2unbylel.12,1 ¡datos de 32 bits?sinextl ¡noaxbx,2ax,[si+bx]

cx,2bl,alal,ahconvhex ¡poner lercei* operandoal,blconvhexax

exbl,alal,ahconvhexa],bl

exconvhexax

de 32 bits

Page 237: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS J\SM ,, , i f

jmp shoit fsn6l

mena68maya<5b:cmp ah,64hjae rnaqueSmov el, alancl cx,3piish simov sijOÍFset operpba ¡instrucciones PUSHA,POPA,BOUND, ARPLcal] readarraypop simov ex, 3test ah,2jz esOI.mov ah,lcali modregrm ;poner operandos

esOI: jmp frn.61

maqueS:cmp ahj6chjb desconocido ¡ínslrucción no reconocidapusb simov si,offset operios ;insuiicciones INS,OUTSand al ,2shr al, 1mov c]}a]xor cb,chcali readarray ;leer el mnemotécnicopop siand abjlcali wob ¡poner el carácter de palabra, doble palabrajmp short finól

desconocido;cali. incógnita ¡instrucción no reconocida

fínG.l: push axxor al,alstosbpop axretn

endp

case70to7f proc nearmov al,T ¡instrucciones JO^OJQ.TK^JZ^IKZ^TBE^TAJS,

;.TNP,IL5.TGK;IL1Í5.TGstosb

Page 238: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE ü - DESENS-ASlVr H - 217

pushmovmovandcalipopcmpjbmovmovjmp

esb: xormov

esw: calipushxorstosbpopretn

case? Oto 7f

case80to83calimovxorpushmov

calipopmovandcaliaddpushxorstosbpopretn

case80to83

case84to87movandshrpushmov

sisi, offset oper4cl,ah

ex, 15readíirray ;leer el mnemolécnico de acuerdo al valor en elsiah,80hesbal,lex, 4sh orí eswal, alcx,2realadr ¡calcular Ja dirección real del saltoax

ax,ax

ax

endp

proc nearcodSllinccl,blch,chsisijOfísetoperl instrucciones ADD,OR,ADC,SBB,AND

;SUB3XORSCMPreadan'aysid1,ahdi, 3 ;swdatadic ;poner dato direcloax512ax

al, al

ax

endp

proc nearcl,ah

cx,2cl,lsisi.offset opertx ;tns tracciones TEST,XCHG

Page 239: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFEWDICE Jí - DESENS.ASMH - Z I S

cali readarraypop siand ah,lor ah,2 ¡obtener dvvmov dx,ofTset atastrmov astring,dxmov dx, offset atbsírmov bstringjdxcali modregrmpush axxor al, alstosbpop axretn

case84to87 endp

case88to8b proc nearpush simov si, offset operrn?xor ex, excali readarraypop siand ah,3mov dx, offset atastrmov astring,dxmov dx, offset atbstrmov bstríng,dxcali modregrmpush axxor al, alstosbpop axretn

case88to8b endp

case8cto8f proc nearpush sitest ah,ljnz leapopcali codSll.incmov si} offset operm?xor ex, excmp bl;5jbe validoinc ex

valido: cali readarraymov si,ofí"sel segreg

¡poner operandos

¡mov;poner el mnemolécnico

¡poner operandos

;rnov

;inslmcción no reconocida

Page 240: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESEKSJVSMH - 2 1 . 9

shl bl,ladd si,bxpush espush dipush dspop esmov di3offsetatasírmov astring,dimovsbmov alj'S1

sfosbmov di, offset atbstrmov bstringjdipop dipop esmov al,lpop sicali modrmmov dh,ahand dh,2 ;d

¡preparar espacio para primer operando

¡preparar espacio para segundo operando

¡leer operando correspon diente a MOD y R/M

cali order ¡ordenarlos operandosjmp short fmSctoSf

leapop: test ah,2jz esleacali codSUinc ¡obtener el bl los bits 5,637 del segundoor bl,bl ¡byte del opcodejz espopmov si}offset operm?mov ex, 1cali readarraymov al/ 'stosbjmp short inclmod

espop: mov si}olíset operppmov ex, 1.cali readarray

inclmod:pop simov dx, offset atbstrmov bstring,dxmov al,lcal] modrmcali addbstrjmp short fmSctoSf

eslea: mov si}offset operíeaxor cx,cx ¡leacali readarraymov dx, offset atastr

;???¡instrucción no válida

¡pop

¡determinar e] operando

¡prepara los espacios temporales para

Page 241: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AlíENDICE H - DESETS-ASIvrJ I - 220

raovmovmovmovpopcali

finSctoSf:pushxorstosbpopreln

caseSctoSf

astring,dxdx, offset atbstrbstring,dxah,3simodregnn

axa],al

ax

endp

;los operandos

¡ubicarlos operandos

case90 proc nearmov si,offset opernopxorcalixorstosbmovmovreta.

case90 endp

case91to97movxoraddcalimovstosbmovandmovcmpjemov

espalabra;xorstosbmovaddmovaddreln

ex, ex ;nopreadarray ;sin operandosal, al

;poner cero a continuaciónal, 1 ;poner tipo de instrucciónex,! ¿longitud de instrucción Ibyte

proc ncarsi,ofísel: operxaxex, ex ;xchg axex, 12readarray ; mnemotécnicoax,',' ¡poner una coma

cl,ahcx,7si, offset reg2 ;poner segundo registro operando.12,0espalabrasi,oífsetreg3cali readarrayal, al

al,lax,12cx,.lcx,12

Page 242: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - K-221

case91to97 endp

case98to99movxormovcmp

movandjnzínc

wd: cal]movaddpushxorstosbPopaddredi

case98to99

case9a procpushmovmovcalipopcalipushxorstosbpop axretn

case9a endp

case9b proc nearmov si,offset operwaixor ex, ex ;waitcal.] readarray

al, al

proc nearsi,o:ffsef operccex, exal,ah12,0wdex, 2al 1 'w41 I, J, , V V

wdexreadarraycx,lcx,12axal, al

axax;I2

endp

nearsisi, offset operjccx,lreadarraysiabsolutoax

al, al

;instnicción CWD

;instrcución

;instracción CALL

jponer dirección, absoluta del cali

;poner un O al final de la instrucción

xorstosbmovmovreln

case9b endp

a1,255CX31

Page 243: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ATENDIÓ! Jf - DESENS.AXM H - 222

case9cto9f proc nearmov si,offset opeomov cl,ahand ex, 3cali readarraycmp 12,1je esppdmov ax,46hstosvvjmp noesppd

esppd:mov aXjDFstoswmov al,''stosb

noesppd:mov a 1,1mov ex, 1add cx,12retn

case9clo9f endp

¡instrucciones PUSH,PQP;LAH, S AH

¡trabajo con el registro de banderas

;trabajo conel registro de banderas extendido

;longiíud déla instrucción¡sumar el prefijo de datos de 32 brls

caseaOtoaS proc nearpush simov memop, 1 ¡trabajo con memoriamov si,offsel: operm?xor cx,cx ¡MOV del acumulador con memoria direccionndacali readarray ¡direccionada directíiemntepop simov al,1' ¡poner un espaciostosbmov al,ahand al,lmov dx, offset: regíjz prfílm ov dx, ofTs e t: reg2cmp 12,0je prfilm ov dx, offset reg3

prfil: push a»xtest ah,2j^ aprcali ponbmov a],','stosbcali pona ¡poner el registrojmp short finaOtoaS

¡registro tipo byte

¡registro tipo palabra

¡registro extendido

¡poner primero la localidad de memoria¡instrucción del tipo mov [####],ax

Page 244: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Tí - DESENS.ASM H-223

¡poner primero el registro¡instrucción del tipo mov ax, [####]

¡ponerla dirección de memoria

npr: cali. ponamov al, Vstosbcali ponb

fínaOtoaS:xor al, alstosbpop axmov ex, 3add cx,12add ax,12reta

pona: xor ex,expush simov si,dxcali readarraypop sireln

ponb; mov a],'['stosbmov bx,Uadd bx,12acld bx,13inc bxpush 12mov 12,0cali conv2hex jconvertJr número hexadecimal en ASCITpop 12mov al,1]1

stosbreta

caseaOloaS endp

;pone el registro en la línea de instrucción.

;clx apunta al arreglo de nombres de registros

;pone la dirección de memoria del tipo [####];el número entre corchetes puede se byte, word

;o doble word

casea4toa7 proc nearmov si,offset opercmxor ex, extest ah,2jnz escmpsinc ex

escmps: cali readarraycali wobpush axxor al, alstosbpop axreta

casea4toa7 endp

¡instrucción CMPS

¡instrucción MOVS

jponer el tipo de datos que manejan

Page 245: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE u - DKSENS.ASM:

casea8toa9 proc nearpnsh simov si, offset: opeitxxor cx,cx ;instrucción TESTcali readarraymov al,ahand al, 1pop sicali accdata ¿acumulador con dato inmediatopush axsor al, alstosbpop axretn

casea8toa9 endp

cíiseaatoab proc nearjnov sijOÍfsel opersíoxor cx,cx ;STOScali readarraycali wob ;Hpo de operandos con los qiie Irabajapush axxor al, al ;almacenarel cero al final déla instrucciónstosbpop axretn

caseaatoab cndp

caseactoaf proc nearmov sijOfíset operslxor GXjCx ;instnicción. SCAStest ah,2jnz esscasinc ex ;instrucci,ón LODS

esscas: cali readarraycali wob ;tipo de datospush axxor al, alstosbpop axretn,

caseactoaf endp

casebOíobf proc nearpush simov si, offset opeim?xor cx,cx jinstricción MOV registro con. dato inmediato

u _

Page 246: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE JI - DESKNS.ASMJ-l - 225

esrl:

eslw:

eslb;

calimovstosbmovandmovshrmov

jzmovcmpjemov

movandpushcalimovstosbpoppoppushmovaddaddmovorjzcmpjeaddmovcalimovcalimovcalimovcalixorstosbpopaddaddaddrctn

casebOtobf

readarrayal,"

al,ahal, 8cl,3al, el.si,offsetregl ¡registro de 1 byteesrlsijOffset: reg2 ;reg¡stro de palabra12,0esrlsi,oífset:reg3 ¡registro de doble palabrac],ahcx,7axreadarray ;se lee el eregistroal,',1

axsiaxbx,llbx,1.2bx,13cl,a1al, aleslb12,0eslwcx,2al,[si+bx+4] ¡agregar el dato inmediato sea byte,convhex ¡palabra o doble palabraal,[si-fbx+3]convhexal3[sí+bx-l-2]convhexal,[si>bx+J,jconvhexal, al

axcx,2cx,12ax,12 ¡ax entrega el lipo de datos con el que se trabaja

endp

Page 247: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE If - DESEHS-ASM u _

casecOtocl proc nearcali codSUinc ¡obtener bits 5,6,7 de segundo byte del opcodemov cl,bl ;en los bytes 0,1,2 de blxor ch,chpush simov sí,offseí operó ¡instrucciones ROI^RO^RCI^RCR, SHL, SHR, S AR

cali readarraypop símov al,' 'stosbmov aljahand al, 1mov dx, offset. atbstrmov bstríng,dxcali rnodnn. ¡obtener el primer operando; registro o memoriacali addbstr ¡poner el primer operandopush axmov al, V ;poner un acomastosbmov bx,cxmov a1,[si+bx]cal] convhex jagrgar el segundo operando que es un dato inmediato

xor al, alstosbpop a,x ;poner cero al finalinc exadd ax,12retn

casecOtocl endp

casec2toc3 proc nearpush sim ov si, offset opeanxor ex, ex ;instmcci ón RETNcali readarraypop si.cali datret ;poner dirección de retorno si es que es necesariapush axxor al, alstosbpop axretn

casec2toc3 end

Page 248: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ABKNDICE ir - DESENS.AXM: H - 227

casec4toc5 proc nearpush simov . si,oJTsetoper.líxor cx,cx ¡instrucción LDStest ah,1jr\7. esldsinc ex ¡instrucción LES

eslds: cali readarraypop simov aXjOffset alaslrmov astring,axmov aXjOlíset; atbstrmov bstring,axmov ah,3cali modregrm ¡obtener y colocar operandospush axxor al, alstosbpop axretn

cascc4toc5 endp

casecíStoc? proc nearcali cod311incpush simov si,ofTset operm?xoror bl,bljz esmovinc ex

esmov; cali readarraypop simov dl,ahand di,lcali datadicadd ax,12push axxor al, alstosbpop axretn

casec6ioc7 endp

¡instrucción MOV de dato inmediato a memoria

;???

;sw¡poner eí operando y el dato inmediato

casec8toc9pushmovmov

proc nearsisi, offset operelcl,ah.

¡instrucciones ENTER y LE AVE

Page 249: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKKDICE H - DESKNS.ASM ¡j _ 22»

and cx,lcali readarraypop sicmp c],lje Íinc8c9.mov al,''stosbmov bXjlcali conv2hexmov al,',' ;poner el dato inmediatostosbmov al,[si+3] ;poner segundo dato inmediatocali convhexrnov ex, 4 ¡longitud de la instrucción 4 bytes

fínc8c9:mov al, 1retn

casec8toc9 endp

casecatocb proc nearpush simov sijOffsetoperrfxor cx,cx ;instrucción RETFcali readarraypop sical] datret ;Poner cblo inmediato tipo doble palabra sipush ax ;es necesarioxor al, alstosbpop axretn

casecatocb endp

casecc proc nearmov sijOffset operiSxor cx,cx ;Tnstruccíón INT 3cal! readarrayxor al, alsíosbmov al,2 ;intrucción tipo doble wordmov cx,l ;longjtud de la instrucción un byteretn

casecc endp

casecd proc nearpush simov si, offset operint

Page 250: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE IT - DESEKS-ASM i r _ 229

xor ex, ex ;Is1mcción,INTcali readarraypop simov bx,Hmov aI,[si-t-bx-¡-rjcaü convhex ;poner el número de la instrucciónxor ai, aistosbmov al, 2mov cx,2 ;longitiid de ia instriucciónretn

casecd endp

casece proc nearmov sijOffset operioxor ex, ex ;insíruccióncali readarrayxor al, aistosbmov alj2mov ex, 1retn

casece endp

casecf proc nearmov si,offset operirxor cx,cx ¡instrucción IRETcali readarrayxor al, alstosbmov al,2mov cx,lre In.

casecf endp

casedOtod3 proc nearcall cod3Uincmov cljblxor ch,cbpush simov si,ofíset oper6 ;Instmcciones ROL,ROR,RCL,RCR, SRL, SHR, SARcal) readarraypop simov al,1!

stosbmov ai5ahand al.l

Page 251: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - UKSENS-ASM .

m ov dx, offset atbstrmov bstring,dxcali modnn jobtener el. primer operandocali addbstr ;poner el primer operandopush axmov al,','stosbtest ah,2jz eslmov aXjl.C1 ;poner el registro elsloswjmp sh oit fin dOtod3

esl: mov al,M.' ;poner 1stosb

findOtocB:xor al, alstosbpop axadd ax,12refn

casedOtodS endp

cased4tod5 proc nearpush simov sijOÍfset" operaaxor ex,ex ;instrucción A-ADtest ah,1jnz esaadinc ex ¿Instrucción AAM

esaad: cali readarraypop simov bx,llmov bl, [si+bx+T]cmp bl,10 ;si segundo byte es igiial a diez entonces es normalje normmov al,1'stosbmov al,blcali convhex ;caso contrario ponemos el dato a continuación

norm; xor al,alstosbmov ex, 2reta.

cased4tod5 endp

cased6 proc nearcali incógnita ;No hay esta instrucción

Page 252: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APEKDICE K - DESENS.ASM j-| -231

retncased6 endp

case<17 proc nearmov si, offset operxlaxor cx,cx ;instrucción XLAT sin operan doscali readarrayxor al, alstosbmov cXjlretn

caseclv endp

casedStodf proc nearand ah,7 •**** Instrucciones del coprocesador matemáticocali cod31.1inc ;obtiene bits 3,4,5 en bl de] segundo byte

;del opcodecali detectmem ;obtíene bits 6,7 en di del segundo byte del opcodecmp ah,0jne notceromov ci,bi ;casos ESCOOOxor ch,chcmp di, 3je nohaymempush simov si,offset opOOOa instrucciones

cali readan*aypop si.mov al,2cali copmem ;poner operando; dirección de memoriajmp Íind8

nohaymem:push simov si,oíFset opOOOb jinsírucciones FADD sl',FMULst

;FSUBR st,FSUB st,FDAOl stFDIV st '' * i J J

cali readaiTaypop simov a1,Vcmp bl,2jb nocompcmp bl,4jae nocompmov al,1'

nocomp:stosbcali copreg ;poner operando: registro del coprocesador

Page 253: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE 3i - DESENS.ASM: jj _ 232

jmp findS

notcero: cmp ah,ljne no hiñopush bx ;casos ESCOGÍmov bx3Uadd bx,12a cid bx,J3mov dh,[si+bx+l]cmp db,0d0hpop bxjae nohaymemlmov cl,bixor cb,chpiish simov si,offset opOOla ¡instrucciones ELD,FXCH snFST.FSTP.FLDENV,

;KLDCW3FSTENV5FSTC\cali readan'aypop sicmp di, 3je poneregcopmov al,2cali copmem ;poner operando: memoriacmp bl,4jb no255mov a1,ltest bl,ljnz no255mov al, 25 5jmp £nd8

poneregcop:mov aI3';'slosbcali copreg ;poner operando: regjslro del coprocesador

no255: jmp FindS

nohaymeml:push si.mov si,ofíset opOOlc jinstrucciones F2XM1)FYL2X)FPTAN3FPATANJ

ÍKXXRACT,KPÍREMa 3KDECSXP5FINCSXP)FP.REÍvrj

;FXL2XP13FSQRT5FSTNCOS3FRKÍDINT3FSCALE)

;FSTN,FCOS; no tiene operandoscmp db,0fí)bjae esfmov si,ofTse1:opQOlb ;inslrucciones FNOP,FABS3FTST3FXAIVÍ3HJ^.1.)

esf: mov cl,db ;no tienen operandos

Page 254: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEETTOICE H - DESENS.ASM H-233

andcaliPopmovmovjmp

notuno; cmpjnemovxorcmpjepushmov

caliPopmovcalijmp

nohayrnem2:movpushmovcalípopmovmov

cx30fhreadarraysicx,2al,4

fmd8ah,2

notdoscl,bl

ch,chdl,3nohaymem2si^offset opOlOa ¡instrucciones FIADD^^FICOM^ICOMP,

;FISUB3FrSUBR3EIDW)KrDIVRreadarraysial,2copmem ¡agregar dirección de memoria

find8

cx30sisi3offset opOlOb ¡instmcción FTJCOMPPreadan-ay ¡sin operandossicx32al, 4

findg

notdos: cmp ah33jne nottrescmp di, 3je nohaymem3mov cl,blxor chjChpush simov si3offset opOlla ¡instrucciones FILDJFTST3FrSTP3FI.D)FSTPcali readarraypop simov al, 2cali copmem ¡agregar dirección de memoriacmp blj5jb findSmov al, 4jmp findS

nohaymemS:

Page 255: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESETÍSASM ]-[ _ 234

push bxmov bx,13add bx}12add bx,13mov cl,[si+bx+l]pop bxand ex, 7push simov s^offset opO 1 Ib pntrucciones FEK^FDIS^FCLE^FINIT^SHTPMcali readarray ;sin operandosP°P s^mov ex, 2mov al,255jmp £nd8

nottrcs:cmp ah,4jne notcuatromov cljblxor ch,chcmp di, 3je nohaymem4push simov si,ofiFsetGpOOQa ^nslrucciones FADD,FN/rüL,FCOM)FCOMPíFSUBl

cali readarray ;con operandos cíe memoria de 64 bitspop simov al,3cali copmem ;poner dirección de memoriajmp fmdS

nohaymem4;push simov si,offset- opOOOb jinstrucciones FADDjFMUI^FCOMjFCOMP,

cali readarray ; de la fonna Mnemotécnico st(i),sl'pop sisub di, 2cali copreg ;poner registro del coprocesadormov al,Vstosbmov ax,'ts' ;ponera continuación ststoswmov al,4jmp

notcuaTro:

Page 256: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS.ASM ., ~,{¡-

cmp ah.5jne notcincoctnp d]33je nohaymemSmov c!3blxor ch,chpush sim.ov si, offset oplOla ¡instrucciones

KLD)FST)FSTPJFRSTOR,FSAYEJFSTSWcali- readarraypop simov al,3 ¡indica 64 bitscali copmem ¡poner dirección, de memoria de 64 bits o máscmp b!34

mov a.1,255 ;al. indica má de 64bitscmp b!57jne findSmov al,l ¡indica 16 bitsjmp findS

nohaymemS:mov c!3blxor ch;chpush simov si,offset oplOlb ¡instrucciones FFREE3FST3FSTP

¡FUCOM s1,FUCO]VrP stcali readarraypop simov al,''cmp bl,4jb nofiícommov al,',1

nofiícom:stosbcali copreg ¡poner registro del coprocesadorjrop short findS

notcinco:cmp ah,6jne notseiscm.p di, 3je nohayrnemC)mov cl,blxor chjchpush simov si,offset opOl Oa ¡instrucciones FIADD3FIMULIrn:COM,FrCOMP,

;]cali readarray

Page 257: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENSJiSir H - 236

pop simov al,l ¿datos de 16 bitscali copmem ;poner dirección de memoriajmp short fíndS

nohaymemíS:mov cl}blxor ch,chpush simov s^ofíset opl lOb ¡instrucciones FADDP,FMUI^ÍFCOMPPÍFSUBRP,

cali readarraypop simov al ,4cmp bl,3je firidSmov al,' 'stosbcali copregmov al /,'stosbmov aXj'ts'stosvvmov al, 4jmp short :find8

;poner registro de] coprocesador

;potier st

notseis:mov cl,b1xor ch,chpush simov sijofíset opl Ha ¡instrucciones

cali readarraypop simov al,l ;datos de 16 bitscali copmem ;poner dirección de memoriacmp b]}4jb short íindSmov al, 4and bl,lsub al,bl

push axxor al, alsíosbpop axretn

casedStodf endp

¡almacenar O

Page 258: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - M ¿~

caseeGtoeSpushmovmovandxorcmpjnecalí

jmpesloop: inc

calitestjnztestjzmovstosbjmp

esne: movstosw

pondir: popxormovcalipushxorstosbPOP

retncaseeGtoeS

casee4toe7movandpushmovtestjzxorcalipopmovaddaddmovmov

proc nearsisi, offset operjlal,ahal,3ex, ex ;ijistnicciónJCXZal,3esloopreadarrayshort pondirex ¡Instrucción LOOPreadarrayah,2pondirah,.lesnealj'E1 ;instnicción LOOPE

short pondirax)rEN1 instrucción LOOPNE

sial, alex, 2realadr ¡calcular 3^ poner la dirección real del saltoax

al, al

ax

endp

proc nearal,ah

al,lsisij offset operoioah,2esincx,cx ;OUTreadarraysibx,Ubx,12bx,)3dx,axaljsi+bx+l]

Page 259: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESEHS-ASir -,, _

calimovcmp

jemovstoswmovstosbjmp

esa: stoswormovjz

eseaxx: movesal: stosb

jmpesin: mov

calimovmovcmpjemovstoswjmp

soloa: stosbcoma: or

mov

jzmov

esregal ¡stosbmovstosbpopmovaddaddmovcal]

J5ne4toe7:xorstosbmovmovaddaddrctn

convhex ¡poner número de puertoax,'A,'12,0 ;es dato de 32 bits?esa ;noas, -E,1 ;si

al/A1 ;dato de 1.6 bits

short eseaxx

di, diaVU ;es dato de Sbitsesala]5'X'

short fine4toe7cx,.l ¡Instrucción IN ACC,Puertoreadarraydx,axa1,'A! ¡dato de J 6 bits12,0 ;es dato de 32 bits?soloa ;noax,'AE' ;si

short coma

d1,d1al, 'U ;dato de 8 bitsesregalal,'X!

al,',' ¡ponerla coma

sibx,11bx,12bx,13al,[si+bx+l]convhex ;poner el número cíe

al}al

ax,dxex, 2

ex, 12ax,12

puerto

Page 260: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS.ASM

casee4loe7

casee8toe9pushmovxortestjnzinc

esjmp: calipopmovmovcalipushxorstosbpopreta

casee8toe9

caseea procpushmovxorcalipopcalipushxorstosbpopreta

caseea endp

caseeb procpushmovxorcalipopxormovcalipushxorstosb

endp

proc nearsisi,offset operjccx,cx ;instmicción .TTvIP cercaah,lesjmpex ;instrucción CALL cercanoreadarraysial,l.cx,3realadr ¡calcular y poner la dirección real del saltoaxal, al

ax

endp

nearsisi, offset operjccx,cx ;.TMP lejosreadarraysiabsoluto ;poner número tipo ####:####axal, al

ax

nearsisi, offset operjccXjCX ;instrucción JMP cortoreadarraysial,alcx,2realadr ¡calcular y poner dirección real del saltoaxal, al

H - 239

Page 261: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS.ASMH-240

popretn

caseeb endp

caseectoefmovandmovtest

jzmovcalimovmovstosbmovcmp

Je

stosbunicoa: mov

stosbmovorjnzmov

esrax; stosbjmp

esin_: movcal]movmovcmpjestosb

unicoa_: movstosbmovorjnzmov

esrgax: movstoswmovstosw

finectoef:movxor

ax

proc near

al,!si,offset operoioah,2esin_cx}2 ;OUT dxreadairaydx,axal ' 'ai, ,

ai,'E ;ponerEAX12,0unicoa

al/A

alj'X1 ;poner AXd1,d1esraxal,'L' ¡poner AL

short finectoefcx,l jinstnicción IN ACC,DXreadarraydx,ax

12,0unicoa_

al/A1

dl,dlesrgaxal/U

axXD'

ex, 1al, al

Page 262: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS-ASM H-241.

stosbaddmovaddretn

caseectoef

casefO procmovxorcalixorstosbmovmovretn

casefO endp

cx,12ax,dxax,12

endp

nearsijOffset operllíex, exreadarray

al,255cx,l

;LOCK;sin argumentos

;longitud de datos no definida

casefl proc nearcali incógnitaretn

casefl endp

;longílud no reconocida

casef2tof3pushxortestjzmovmovandcmpjeinc

esrepne:movfinf2tof3:

movcalíxorstosbpopmovmovretn

casef2tof3

proc nearsiex, exahslesrepnebx,il

;¡nstnicción REPE

a^Oaóhfiní2toí3ex ¡instrucción REPshort finf2tof3

cx,2 jinsTnicción REPNE

si,offse1 operrrrreadarrayal, al

sial,255ex,!.

endp

Page 263: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEKNDTCK K - DESEKSJVSM H - 242

casef4 proc nearmov si,ofíset operhltxor cx,cx ;instnicciónHLT, sin argumentoscali readíirrayxor al, alstosbmov al,255 ;longitud de datos no específicamov cx,lretnendp

casefS proc nearmov si,offset opéreme

;insírucción CMC, sin argumentosxorcalixorstosbmovmovretn.

casefS endp

CXjCX

readarrayal, al

CX31

casef6tof7 proc nearcali cod311inc 'mov cl,blxor ch,chpush simov si,offset oper? ^instrucciones

calipopor

jzmovstosbmovmovmovandcali.cali

pondat; movanclcali

readarraysib1,b1pon da fal,"

dx, offset atbstrbstringjdxal,ahal, 3modrm ;halla el operando de acuero a MOD y R/Maddbstr ;poner el operandoshortfinf6tof7dl,ah

datadic ;dato inmediato para Tesl

push ax

Page 264: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS.ASM U - 243

xor al, alstosbpop axadd ax,l2reta

casef6tof7 endp

casefSlofdmovmovandcalixorstosbmovmovretn

casefStoixl endp

proc nearsi,offsel operg ¡instrucciónc1,ah ; sin operandoscx,7readarrayal,al

cx,l

casefetoff proc nearcali codSUincpush simov si,ofíset oper9 ¡instrucciones INC,DEC,CALL,CALL FAR,

;.TMPS.1MP FAR,PUSHmov al,ahand al,ljnz normalcmp bl,2jb normalmov ex, 7jmp sh ort fínfetoff

normal; mov cl,blxor ch,chxorcmpJe

cmpjne

espec: movftnferoíf:

cali readarraypop simov di, al

al,"

dh,dh

especcl;5fínfetoffdh,2

¡requieren operandos

movstosbmovmov

ax, offset atbstrbstring,ax

Page 265: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - DESERS.ASM

mov ax,dxcali modrmcal] addbslrxor al, alstosbmov ax,dxor ah}ahjz same

al,ah

H - 2 4 4

movsame: retncasefetoff endp

;obtener operando de acuerdo a MOD y R/M

public desensDetdesensDet: proc near

;Este procedimiento genera un string a partir del código de máquina apuntado;porDS:SI, desde ES:DI, terminado en O, consistente en:; - Cuatro caracteres que representan al valor inicial de SI en hex.; - Cinco carateres del mnemotécnico de la instrucción.; - Veintiún caracteres de parámetros del mnemotécnico.;Ademas, se retorna:; AL tipo de instrucción (0,1,2,3,4 o 255); CX longitud de instrucción

jpush dicidmovpushmovcalipopcal]cal]pushpushpushpushpushpushmovmovmovrepne

jemovmov

ax,siaxal,ahconvhex

axconvhexdes en s ;axbxexdxsidsbx,diex, 8al,"scasb

;poner el primer byle dedesplazamiento

;poner el segundo byte de dezplazaminetoobtiene el mnemotécicoylos operandos

¡Dl comienzo del mnemotécnico;buscar espacio en blanco hasta el octavo

; carácter;si no se lo encuentra hay parámetros

ConParamdi,bxcx,8 ;busco un 0 hasta el octavo carácter

Page 266: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESEHS.ASM H - 245

movrepnej^eaddmovdecrepmovstosbjmp

ConParam:movmovmovrepnecmpjb

jemovmovmovsubmovsubmovmovmovmovrepnedecmovaddstd

CicDer: lodsbstosbcrapjaemov

CicSpc: cmpjestosb

al,0scasbConParam ;si no se lo encuentra, hay parámetroscx,38 ;poner 38 espacios al final del único mnemoal,"distosbal,0 ;poner un O al final

FinDesDet

di,bxex, 8

;recuperar el comienzo del mnemotécnico;buscar un espacio

scasbex,!. ;en que posición esta el espacio?sexta ;si CX^O, octava posición; mover parámetros

;una posición a la izquierdaPonSpcFin ;si CX-1, séptima posición, no se deben mover

;los parámetros;ci CX>^2, sexta o menos.;en este caso, moverlos parámetros a la; derecha

ax,esds,axdi,bxdx,7dx,didi,bxbx,cxcx,43al,0scasbdisi, didi,dx

;DX—número de posiciones por mover a la derecha

;BX=comjenzo de los parámetros

;buscar el fin de string

; dirección inversa

si3bx ;se llego al comienzo de los parámetros?CicDer ;mover el stringai;1

di, siPonSpcFin

short CicSpc

Sexta: mov ax,esmov ds,axmov si, di

;mover los parámetros una posición a la izq.

Page 267: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS.ASM H - 246

dec diCiclzq: lodsb

stosbcmp al, Ojne CicTzq

PonSpcFin:cidmovmovmovrepnedecmovrepmovstosb

FinDesDet;poppopPopPopPoppoppopreta

DesensDetend

di3bxcx354-al,0scasbdial," :stosbal,0

5

dssidxexbxaxdi

endp

;buscar la posición del cero

;poner espacio en blanco

;poner un cero

Page 268: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBLA-ASM H _ 247

MODULO ENSAMBLA.ASM

.**#***#********PJ^Q(^£jyy^]7N^

.model small

.486

; ÁREA PARA DATOS

Í

.data

transit db 32 dup (?)

mnemo db VJ}d\03T3USh',63'POp'57}!Gr',8db 'ADc',1 GH3'SBb'3 1 SH/ANd'^OHdb 'SUb'^SH^DAs'^FH^XOr'^OH/db 1CMp1538H!fNEAr',39H3tFAr'!3AH3lPTr'!3BHdb 1BYTe'I3CH,1WORd1}3DH,T)WORdl,3EH5'AAstJ3FHdb mc'340HI(DEc1J48HJ'SHOR^50HílQWORd!J51HJ'NOtf,52H11NEgI,53Hdb

db !.TNAe',72H,fJNb')73H3%f372H3'JAeV73Hdb 72^74^ '.TNz^SH^JNa'^éH^JNBe'JTHdb !JPe137AH,'.TPo'37BH,'.TNGe',7CH3'.TKl',7DHdb IJNgl,7EH5'JNLe')7FH3IJo',70H51.TNo1371Hdb IJcl,72H3MNc'373HIfJe'374H3!JNe'375Hdb I,TBet)76H,IJa1,77H3'.Ts!,78H,1JNs',79Hdb '.Tp!57AH3'.TNTp!}7BH31Jl',7CH!!JGeI37DHdb

db !TESt',84H,1XCHgf386H;!jVÍOV388H,fLEa!,8DHdb 1NOpI)90H5'C.Bw1,98H,'CWd1;99H,'CAU'59AH;WArt159BHdb fPUSHf,9CH3FPOFf,9DH,tSAHf39EH,FLAHf,9FHdb !MOVSbt3OA4H,fMOVSw1,OA5HJ(avtPSb',OA6H;1CMPSw'iOA7Hdb !STOSb'3OAAH3'STOSwt,OABH,^ODSb',OACH3!LODSw')OADHdb lSCASblJOAEH;SCASwl3OAKHJfREt'5OC2H}'RETn1,OC2Hdb 'LEsfJOC4H,rLDs'3OC5H3!RETf3OCAH31Nt(,OCCHdb r!NTo')OCEH,fIREt1,OCEE,rROl1,OPOH;llOr13ODlH

db rRC]l3OD2H,'RCrJ3OD3H3fAAjTi!,OD4H3'AAd13OD5H

Page 269: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJES!! H-248

db 1XLAl*1OD7HrfEScIíOD8H;iSHl',ODCH1fSH:rl1ODDHdb fSAllJODCH3'SAr',ODFHiILOOPNe1,OEOH,fLOOPNz1}OEOHdb FLOOPe!,OElH,(LOOPz',OElH5!LOOpfIOE2HI'JCXzt)OE3Hdb TInl)OE4H,1OUf,OE6H)'JMp'5OEAHJrLOCk1;OFOHdb 1REPNe',OF2H,'REPNz;OF2H,!REp1,OF3H,!REPe',OF3HJtREPz'íOF3Hdb !HLt1,OF4H,'CMcl!OF5H,ICLc1)OF8H,1STc';OF9Hdb tCUl,OFAHí'STit1OFBH;iCLd!1OFCH11STdl1OEDHdb OFFH

regs db 'ALCLDTJ^LAHCHDHBH1

db 'AXCXDXBXSPBPSIDrdb 'EAXECXEDXEBXESPEBPESIEDI1

sregs db ESCSSSDSFSGS'

loners db 27H;2FH}37H,3FHI90H,98H,99H,9BHI9CH,9DH,9EH,9FHdb OA4H,OA5H,OA6H5OA7H3OAAH,OABH5OACH,OADH;OAEH,OAFHdb OCEH}OCFH,OD4H?OD5H,OD7Hdb OF4H3OF5H,OF8H,OF9H,OFAH,OFBH)OFCH)OFDH

oners db 6 ,40^48^520,53^54^5511,5611,5711db 70HJ71H,72H,73H,74H575H,76H,77Hdb 78H,79H,7AH)7BH;7CH,7DH,7EH!7FHdb 9AH,OC2H,OCAH,OCCH,OEOH,OE1H,OE2H,OE3H,OEAH

ÁREA PARA CÓDIGO

.code

NEsp equ 10delspc proc near

;Este procedimiento salta los espacios y los TABs en el string por¡ensamblar y deja SI apuntando al primer byte que no sea vin espacio.

;

;Entrada: DS:SI apunta al punto del string desde eí cual; se desea proceder.¡Salida: DS:SI apunta al primer byte que no es un espacio.; CY es 1 si hay más de NEsp espacios (error), en; cuyo caso DS:SIno es alterado

push axpush expush bpmov ex, NEspmov bp,si

;máximo NEsp espacios

Page 270: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBLA-ASM H-249

busc: lodsbor

jzcmpJe

cmpjne

spac: loop

errdel: movstcjmp

encont: deccíe

fíndl: poppoppopretn

delspc endp

aJ,alerrdelal,"Spacal,9encontbusc

si,bp

short ;findlsi

bpexax

:si se llega al final del string;h.ay un espacio?

;si, saltarlo;hayunTAB?

;no, hecho;saltar el espacio y ver sig. car.

:apuntar al carácter válido

encnem proc near

;Este procedimienío encuentra el pseudocodlgo del mnemotecnico que está al¿comienzo del string por ensamblarse,:

^Entrada: DS:SI apunta al string, que debe terminar en 0.; ES:DI es la dirección en donde se pondrá e] pseudocodlgo.

J

;Salida: DS:SI apunta al final del mnemotecnico + 2 en el string sí; este fue encontrado (pues debe terminar con espacio); ES:DI apunta al final del pseudocodlgo + 1; CY es ] si el mnemotécaico es inválido o si hay error: como en DELSPC 3 en cuyo caso DSrSIy ES:DI no son; alterados (excepto si había espacios desde DS:SJ); AX contiene el pseudocódigo (AL~03 AH= cod.)

caHjepushpushpushpushmovmovmovmov

delspcfínenc2bxdxesdiax,@dataes,ax

;encontrar el mnemotecnico;en caso de error, terminar

;hacer que ES:DI apunte a los mnemotécnicosdi, offset mnemodx,si ¡preservar el comienzo del mnemotecnico

Page 271: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDICE H-251

pop esfínencl:pop dx

pop bxfinenc2:retnencnem endp

public encregencreg proc near

;Este procedimiento encuentra el código del registro al que apunta DS:SL3

;Entrada: DS :SI apunta al ascii del registro

Salida: DS:SI es cambiado según DELSPCAH es alteradoAL código del registroCY 1 si no es un registro o si hay error de DELSPC

7

cali delspcje fínencregl ;push expush bxpush espush dimov [email protected] es3axmov di, offset regsmov Eax,[si]and Eax,0dfdfdfh

mov cx324srchregrm ov Ebx, es : [di]

cmp ex, 8jbe rupGcmp ax, DJÍje foundreginc diinc diloop srchregstc :si rn

sí hay demasiados espacios, fin

;apuníar ES :DI a la tabla de registros;LO DIGITADO ascii del reg en AX

;en mayúsculas

;de la tabla

o se lo encontró, errorshort errreg

rupO; andcmp

Je

incincincloop

eax,ebxfoundregdididisrchreg

Page 272: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMHLA.ASM H - 253

¡encontrar el código del registro

malsreg:stc ¡si no se lo encontré^ errorjmp sho.rt errsreg

foundsreg:mov a],[si+2] ¡tercer carácterand al,0dfh ¡hacerlo mayusc\ilacmp al,'A1 ¡si es una letra, nialjb oksregcmp alj'Z'jbe malsreg

oksreg: mov al,6sub alj elor al,40hcíe

errsreg:pop dipop es

fínencsreg:pop ex

íinencsregl:reta

encsreg endp

ascahex proc near5 : :- :

¡Este procedimiento transforma el stríng en AX (con AL, — MSD) a un byte¡en AL, CT - 1 si no hay tal hex en AX.) ~

push excmp ah/fja errhexcmp ah,'a'jb tstaland ahjOdfh

tstal: cmp aljTja errhexcmp al,'a'jb trnsand ai,0dfh

trns; cmp ah/A'jb numahsub ah/A'-^'-l

numah: cmp al5'A! ¡lo mismo con ALjb numalsub al,'A'-'9l-l

numal: sub aXj'OO' ¡pasar de ascii a numéricocmp al, 16jae errhexcmp ah,16

¡transformar el carácter en AH a mayúscula

¡transformar el carácter en AL a mayúscula¡ajustar el carácter en AH si es alfabético

Page 273: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EUTSAMETAASM H-254

jaemovshlorcíejmp

errhex; stcfinhex: pop

retnascahex endp

errhexcl,4al,clal;ah

short fínhex

ex

icondensar e] número

esletr? proc near

;Este procedimiento determina si el carácter contenido en. AL es un dígito;o una letra, en cuyo caso CY = O, y de lo contrario, CY = 1.;AL es alterado.1 : : ~ — : ' :

cmp ayO'jb noesltcmp al/9'jbe siesltand al5Gdfhcmp al,'A'jb noesltcmp aJj'Z'jbe sieslt

noeslt: stcretn

sieslt: cíeretn

esíetr? endp

public eshex?eshex? proc near

¡mayúscula

;Este procedimiento determina si el string al que apunta DS :SI es un número;hexadecimal; en cuyo caso encuentra su valor.i;Entrada: DS:SI apunta al string, excluyendo signos 4-, - o espaciosj;SaIida: AL ~ 16 si el número es de 1 o 2 digitos, 32 en otro caso; AH = longitud del string del número; BX = valor del número; CY - 1 si lo apuntado por DS:SI no es un número o si es un; número de mas de 32 bits

Page 274: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ETÍSAMBLAASM H - 255

pushxor

trycero:cmpjneincjmp

noceroin :movorjzmovmovcalijncmovxorjmp

noproblem:movcalijemovcalijemovcalije

movcalíjestcjmp

N4Dig; movcalijemovmovcalijemovmovmovjmp

tresdig:movmovcali

dxbx,bxbyte ptrfsí+bxyo* ¿buscar ceros inicialesnoceroinbx ¿contarlos en BXshort trycero

dh,bl ¿número de ceros en DIíbx,bxnoproblem. ;si no hay ceros inicialesab,[si+bx]al/O1

ascahex ;si el string era solo ceros3 ya no debenoproblem ¿haber mas caracteres hexadecimales válidosax,16bx,bx ;salir con cerofinnum

al,[si+bx+l.]esletr?undigal,[si+bx+2]esletr?dosdigal,[si+bx-i-3]esletr?tresdig

al^si+bx+4]esletr? ¿tiene más de 4 dígitos?N4Dig ;no; OK

;si} errorshort errnum.ax,[si+bx] ¿el número tiene 4 dígitosascahexerrnumdl}alax,[si+bx-t-2]ascahexermumbl,albh,dlax,420h ;AL=325 AH-4short íirmumal5lO' ¿número de tres dígitosah}[sH-bx]ascahex

Page 275: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMELA-ASM H - 256

dosdig:

undig:

finnwn

je errnummov dlsalmov ax,[si+bx+l]cali ascahexje errnummov b1,almov bh,dlmov ax,320h ;AL=32, AH=3jmp short finnutnmov ax5[si+bx] ¿número de dos dígitoscali ascahexje errnumrnov bl?alxor bb,bhmov ax,210h ;AL^16, AH=2jmp short finnummov al/O1

mov ah,[si+bx]cali ascahexje errnummov bl,alxor bh,bhmov ax, 1 lOh ; AL=1 6, AH=1: add ah}dh ¿incluir los ceros en la longitudcmp ah,2jbe longbytmov al,20h

longbyt:clcerrnum: pop dx

eshex?

esreg?

retoendp

proc near

;Este procedimiento es similar al anterior: encuentra si el string al que¿apunta DS:SJ es uno de los registros BX, BP} SI o DI.?¿Entrada: DS:SI apunta al string excluyendo signos (+ o -) y espaciosi

;Salida: CY=1 si hay error, caso contrario:; AH = 2 (longitud obvia del string); AL- 1 si SI; 2 si DI; 4siBX

8 si BP3 :

mov ax,[si]

Page 276: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE H - ENSAMBIAASM H-258

shlmovcaliJclodsbcmpjnecalijnc

errml: jmpnopref: xorcorchetes:

xorxormovlodsbcmpjnecali

Jccmp

Jne

inccali

Jc

analiz: cal]Jc

movjmp

nohl: calijnc

errm2: jmptsfmin: cmp

jneinccali

Jc

cal]jenegmov

rdyrmm: xortestjzmovxoradd

al, eldh;aldelspcerrml

al,1:'errmldelspccorcheteserrmemdh,dh

d!5dlbXjbxcx,bx

al/Cerrm]delspcerrmlbyte ptr[sitstminsidelspcerrml.eshex?nohl,cx,bxshortrdyresreg?rdynumerrmembyte ptrfsi'analizsidelspcerrm2eshex?errm2bxcx,bxdí,aldl,alerrm2al5ahah}ahsi,ax

;en dh

;hay los dos puntos reglamentarios?;no

¡codificar inexistencia de sreg

¡inicializar primera parte del códigopnicializar desplazamiento

;el carácter actual debe ser el;corchete reglamentario

pío;si, ignorarlo

;hay un número hex?;no;si5 preservar su valor

um;hay un registro reglamentario?

;si;no5 error

¡/-'¡inicia con un signo -?¡no

;si; lo siguiente solo puede ser un número

;encontrar el negativo;preservarlo

¡poner el bit correspondiente en DL;estaba ya puesto, implicando duplicación?

;si, error¡longitud del string

¡ajustar SI

Page 277: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAASM H - 260

jnc rdynum3errm4: jmpIstmin3;cmp

jnecalijecalijenegmov

rdynum3:xortestjzmovxoraddcalije

lodsbcmpjne

condensar:movandcmpjemovandcmpjemovandcmpjemovand

jz

xortestjnzmovxorandcmpjne

errmemal,'-'errm4delspcerrm4eshex?errm4bxcx,bxdl,aldl,alerrm4al,ahah,ahsi,axdelspcerrm4

a!,']'errm4

al,dlal,3al,3errmemal,dlal, 3 2al, 12errmemal,dlal,30ha!330hernnemal,dlal,3fherrmem

ah,ahdl,2sbOal,dlal,.1al, 5al,5bit!

;despues de un - solo puede haber un número

;poner el bit apropiado; duplicación?

;si, error;longitud leída hasta ahora

jajustar SI

;ya se ha leído 3 cosas, debe haber;un corchete Analizador

jdeterminarsi el código;en DL es incongruente;si DL = OOKEDCBA, entonces

;e1Tor = -A~B-C~D-E~F + AJ3 + CD + EF

;inilici alizar código condensado;bitO - ~AC -i- B

Page 278: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EHSAMELA.ASM H-261

sbO: orbitl: test

jnzmovandjnz

sbl: orbit2; mov

andjzmovandjnz

sb2: orbit3: mov

xorandcmp

Je

testjzmovandjz

sb3: orbit4: test

jzandjzor

fjncond:movmovorstoswmovstoswcíejmp

errmem: movstc

íinmem: poppoppoppoppopreta

encmem endp

ah,ldi, 8 ;bitl=~A~B-sbla], dia1,3bit2ah,2al, di ;bit2 = ~A~B -al_33sb2aí,d]al, 12bit3an,4al}dl ;bit3 = ~A~B~<al,27hal,2fhal,2fhsb3d!516bit4a!5dlal,7bit4ah,8dl,32 ;bit4 - (A + Bfinconddl,15fin con dab,16dl,ab

ax5dxal,60h

ax,cx

short finmemsi,bp

bpdxexbxax

(A + B + C)B

C + D)F

Page 279: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EEÍSAMBULASM ,,- -+,•••,rl - ¿o.>

stosbmov ax,bxstoswjmp shott noerrhex

unbyte: rnov ah;blstosw

noerrhex;cJc

ímenchex;pop dxpop r?xpop axretn

enchex endp

enspasol proc near

^;Este procedimiento ejecuta el primer paso de compilación, es decir, la¡traducción de un string alfanumérico a seudocódigos que serán transformados;a código verdadero por otro procedimiento.3

¡Entrada: DS:SI apunta al string por compilarse, que debe terminar; enO.; ES:DI apunta al lugar donde se desea el seudocódigo;

¡Salida: DS:SI es alterado; ES;DT es alterado; CY set si hay error3

push axpusb bxpush expush dxcali encsreg ;es la instrucción un prefijo como ES: ?je nosregpref ;noinc si ;si, proceder en consecuenciainc sicali delspcmov ah5a1 ¡preservar códigolodsbcmp al,':' ;por sintaxis, debe haber :jne errpasolmov a!3ahstosbjmp short bienpasol

nosregpref:

Page 280: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - H - 264

calijecmpjbcmpjacalijecalijecmpjbcmpjacalijecalijecmpjbcmpjbe

nopreflr:cmpjbcmpjbecmp

Je

cmp

je

bienmne:movmovmov.movmov

Jone?: cmpJeincloopjmp

eslonermovmov

calijnc

encnemerrpasolah,0f0hnopreflrah,0f3hnopreflrdelspcb.ienpasolencnemerrpasolah,Qfí)hnopreflrah,0f3hnopreftrdelspcbienpasolencnemerrpasolahjOfOhnopreflrah,0f3herrpasol

ah,39hbienmneah,3eherrpasolah,50herrpasolah,51herrpasol

dx,dsbx,@datads,bx

;lo primero debe ser un mnemotécnico

;es un prefijo REP o LOCK?

;si, buscar siguiente mnemotécnico;si no hay más que el prefijo, terminar

;es un segundo prefijo REP o LOCK?

;si, buscar siguiente mnemotécnico;si no hay .mas que e] segundo prefijo, terminar

;no puede haber un tercer prefijo

;el mnemotécnico inicial no puede ser NEAR,;PTR, BYTE, etc

;preservarDS

bx; offset Ion erscx,35ah,[bx]eslonerbxJone?

¡averiguar si e] mnemotécnico es uno de los;que no aceptan argumentos;si

shorí hayargds,dxbyte ptr es

delspcerrpaso.l

:[di-2],l ;marcarjo como loner¡apuntar al punto inmediatamente después

;del mnemotécnico y buscar el fin de string;si hay mas caracteres válidos, error

Page 281: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - H - 265

bienpasol:mov aljQffhstosbcíejmp short finpasol

errpasol:stc

finpasol:pop dxpop expop bxpop axreta.

hayarg: .movmov

ou e?; cmpjeincloop

esoner: movcmpjecmp

admite dp:ormovjmp

sol oun o:mov

dosarg: xorargs: mov

calijnccmp

JecmpjecmpJe

jmpenarg: cali

jnccali

bx, offset onersex,35 ¡averiguar si el mnemotécnico es uno de losah,[bx] ¡que aceptan un solo argumentoesoner ¡sibxone?short dosargbyte ptr es:[di-2],2 ¡marcarlo como onerah,9ab " ¡CALL?admitedp ¡si, puede haber dos puntosah,0eah ¡.TÍvIP?solouno ¡no

byte ptr es:[di-2],4 ¡marcarlo como JMP o CALLcl,2 ¡marcar que puede haber un argumento dobleshort args ¡de dirección absoluta

cl,l ¡marcar que debe haber solo un argumentoshort argscljCl ¡marcar que debe haber dos argumentosds,dxdelspcenarg ¡confirmar presencia de argumentosah,0c0h ¡su no presencia solo es admisible conbienpasol ¡RET, RETN o RETFah,0c2hbienpasolahjOcahbienpasolshort errpasolencmem ¡buscar argumentossegargencreg

Page 282: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJE!

Jcstosbincincjmp

.noreg] : cali

Jc

stosbincincjmp

nosreglrcalljnccali

Jc

calicalijnccali

Jc

segarg: or

izcalijecmpjnelodsbcmpjnecalijejmp

haydos: calijelodsbcmpjnecalijnccalijestosbincinc

bienl: jmpnoreg2: calí

noregl

sisishoit segargencsregnosregl

sisishort segargenchexsegargencnemenpasolencnemencmemsegargenchexerrpasolel, el ;ihaydosdelspcbienld,2 ;errpl

;s(al,1;' ;s<errplenchexerrpl

bi enpasol

deispcerrp]

al,1/ ;e!errplencmembienlencregJioreg2

sisibienpasolencsreg-

¡buscar por ejemplo BYT.E PTR

;el PTR es opcional

;puede también ser un número (para saltos)

;dos argumentos?;si;no, uno solo

;era JMP o CALL?yio

;solo se admiten dos argumentos aquí si están¡separados por :

;si hay un solo ai-gumento, error

;el separador entre argumentos es la coma

¡buscar segundo argumento

Page 283: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE H - ENSAMBIAASM H -268

push]odsbcmpjemovmovmovshrmovjzdec

jzdecjzdecjzdecjzlodswjmp

esdatab;lodsbxorjmp

esinstnlodsbjmp

esregis:movand.movjmp

essregi;movandmovjmp

esmemor:movmovshlandandorlodsbxchgmovlodswmov

rdytipo:clcjmp

fininst:stc

ex

a1,0fíh ;íro de instrucción?fininstch,ahah,al.cl.5al,c] ;obtener el tipodi, al ;en DLesinsíralesregisalessregialesmemoralesdatab

;es dato de wordshort rdytipo

;es dato de byteah,ahshort rdytipo

;es mnemotécnicoshortrdj'tipoal,ah ;es registroa1,0fhah;chshort rdj'tipoal,ah ;es registro de segmentoal,3ah,chshort rdytipo

al,ah ;es memoriacJ,3

31,01

al,0c0hah,7ahsal

a],ahbx,ax

cx34

short fintipo

Page 284: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMELA-ASM

fin tipo ;pop exretn

tipo enclp

gelpref proc near

i.

;Este procedimiento obtiene el prefijo de redefínición de segmento a partir¿del número de registro de segmento.i¿Entrada: BH = xPSrxxxx con P = presencia de prefijoí

;Salida: AH = O sí no hay prefijo, o; prefijoi

xor ah,ahtest bh,40hjz íingtprnov ah,bhshr ah,land ah,]Jíhor íih,26h

íingtp; retngetpref endppref? proc near

¿Este procedimiento determina si debe incluirse un prefijo de redefínición;de segmento antes del opcode, del cual solo debe haber .1 byte, y ES:DJ;debe estar apuntando a la dirección siguiente a dicho byte. Hace la¿inclusión y los ajustes del caso cíe ser necesario.a;Jintrada: AH O si no debe haber prefijo; opcode del prefijo en caso contrario; ES:£>T dirección del bj'te de opcode + .13

¿Salida: AL es inalterado o contiene ei opcode; DI es ajustado¿ C!X incrementado en 3 sí hay prefijoj

cmp ah,0 ¿hay preSjo?je noprefijomov al,ah ¿sí, ajustarxchg a^es^di-]]stosbirte ex

noprefijo;reín

enclp

Page 285: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

KíyitK ü - iiSSAAlULAJüai J_| _

sizedisp proc nearj;Determina dados los bits 6 y 7 de AL, que debe tener el byte de uiodregr/m,;el tamaño en bytes del desplazamiento u offset Luego incluye esle;desplazamiento en el opcode.;

¡Entrada: DL o DX desplazamiento; AL byte de modo de díreccionamiento; BS:DI apunta al Jugar del opcode donde va el desplazamiento

¿Salida: AX es alterado; ES:DJ es ajustado; CX incrementado según el desplazamiento5

test aljOcOh ¿obtener el inodJz despl? ;sí es 00, averiguar si hay desplazamientoand al,0c0hcmp al30c0h ;es 11?je nodesp ;si} tampoco hay desplazamientoinc excmp al,40h ;es 01?jne dosbyt ;nomov a!3dl ;si, desplazamiento de un bj^testosbjmp short nodesp

despl?: and al;7 ;si mod = 00 y r/m = 110,cmp al,6 ;el modo es directojne nodesp

dosbyt; mov ax,dx ;desplazamiento de dos bytesstoswinc ex

nodesp: relnsizedisp endp

sizedata proc near

¿Similar al anterior: determina el tamaño del dato según el bit O de AL: y lo¿coloca en el opcode.i¿Entrada: AL su bit O es w; BP dato; ES:DI apunta al lugar del opcode donde debe ir el dato5

¿Salida: AX es alterado¿ DI es ajustado¿ CX incrementado según los datos

Page 286: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA-ASIir j ¡ _ ¿yj

inc exTest alj] jw~ J /mov aXjbpjnz dosdata ;sislosb ;nojmp short fsdata

dosdata:inc exstosw

fsdata: retnsizedata. endp

modrm proc near3;Este procedimiento analiza el pseudocodigo de modo de direccionamiento y;genera datos necesarios para Ja compilación.

¡Entrada: DS:SI debe apuntar al pseudocodigo de modo de dir.3

;Salida: AH prefijo de redefinición, de haberlo, o O; BL- -MdOOOr/m; BH = hOOOOOOw; h-validez de w; DX desplazamiento, de haberlo; si no, es alterado; CL incrementado en ] si jiohay error; CH -O; C i set si hay error, en cuyo caso los registros; quedan inalterados

push bx

push expush dxpush sipush bppush axloclsbdec sitest al,0e0h ;mnemo?jnz mrmnomne ;no

cali tipoje emnodrrncmp al,3ch iB^H^?jb emnodrmje bytptí-cmp al,3eh ;WORD o DWORD?ja errmodnnmov dh,81h pnarcarwordjmp short elpír

bytptr: mov dh,80h jmarcarbj^te

Page 287: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - EHSAMBLA-ASvr ] I - 273

pop bppop sipop dxpop expop bxstcretn

modrm endp

modregrm proc near

;Este procedimiento genera datos necesarios para el. ensamblado de instrucciones;que tienen dos operadores (como ADD), dados los pseudocódigos generados en eljpriiner paso de compilación.

;Entrada

i

;Salida:

DS:SI debe apuntar a los pseudocódigos de los operadores.

AL - OOOOOOdwAH prefijo de redefinición, de haberlo, o OBL byte cíe modo de dirección amientoDX desplazamiento de haberlo, si no, es alteradoCX incrementado en 1 si no hay errorCY set si hay error, en cuyo caso los registros quedan

inalterados

push axpush expush dxpush sipush bppush bxlodsbdec siand al,0e0hcmp a1,20h ;reg?jne mrrnoregcali tipocali jnodrmje errmrrcali arreglaje emnrror als2 ;d~l

shoit bienmrrmimoreg:

cali modrm.je errmrrmov bp,dx

Page 288: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EHSAMHIAASM

errarr: stcretn

modregrm endp

modrmdata proc near

ir _

¿Similar al anterior, cuando el. segundo operador es un dato inmediato. Produce¿resultados diferentes si el primer operador es un acumulador.

J

¿Entrada: AL = xxCODxxx; DS:SI debe apuntar a los pseudocodigos de los operadores

;Salida: AL = OOOOOOsw; AH prefijo de redefinición, de haberlo, o O; BL - mdOOOr/m OR COD; DX desplazamiento, de haberlo, si no, es alterado; BP data; CX incrementado en 1 si no hay error

; o:; AL = OOOOOJ.Ow; B.P data; CX inalterado

3

; CY set si hay error, en cuyo caso Jos registros quedan: inalterados

pushpushpushpushpushpushmovlodsbdecmovandcmpjnetestjnzlodsbmovcalicmpjbje

exdxsibpbxaxch,al

siah,alal,20h ;reg?al,20hnoacah,7noac

bl,altipodl,4 ;dato?emnrdmrdok

Page 289: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJE! H - 276

testjnzcmpja

mrdok: movmovandshrshrshrormovpopmovaddpoppopretn

noac; movcalijemovmovmovcalicmpjbjneor

nosext: testjztestjnzcmpjnecmpjajmp

mrdnoesp:andorcmpjneor

mrdrnok: xchgmovand

bl.8mrdokax,255errmrdbp,axa],b!al, 8al,lal, 3.a1,lal,4b],alaxal,blsp,6dxex

al, enmodrmerrmrdch,alal, dibp,axTipodl,4- ;dato?errmrdnosextbh,2 ;sign extend: s=lbh,80h ;definiclo size?mrdnoespbh,lmrdmokdi, 5mrdmokax3255errmrdshort mrdmok

bh,2bh,80hdi, 5mrdmokbh,l

bp,axdl,alch}38h

Page 290: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA-ASM H - 2 7 7

ormovandaddmovpopmovxoraddderetn

errmrd: poppoppoppoppoppopstcretn

jmodrmdata

bl,chal,bha!,3sp,2ch,blbxbl,ch

ch,chsp,8

axbxbpsidxex

endp

delptr proc near

;EL mnemotécnico PTR es innecesario en todos los casos. Si. DS :SI apunta;al pseudocodlgo de este mnemoíecmico, este procedimiento Jo salta y deja;a ST apuntando al siguiente pseudocodlgo; en otro caso, no hace nada.3

noptr:sipír:

delptr

pushpushpushpushmovcalijeorjnzcmpjemov

poppoppoppopretn.endp

axbxdxbpbp,si

tiponoptrdl,dlnoptra!53bbsiptrsi,bpbpdxbxax

;mnemo?

;PTR?

Page 291: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJVSai [_| _ 273

jmpsh? proc neari¡Este procedimiento determina si. la distancia en tre AX y DI esta entre;+1 27 y -.1 28, en cuyo caso pone esta distancia en AX y CY = 0; de lo¡contrario, CY= 1.

subcmp aXj.127jg notshrfcmp aXj-128jl notshrtcíeretn

notshrt:stcretn

jmpsh? endp

enspaso2 proc near

;Este procedimiento ejecuta el segundo paso de compilación, es decir, la¡traducción de .los pseudocódigos a un código verdadero.

í

¡Entrada: DS:SI apunta al pseudocódigo; liS:DT apunta al lugar donde se desea el código

3

¡Salida: DS:SI es alterado; ES:DI es ajustado¡ CX longitud del código; CY set si hay error, en cuyo caso los registros; quedan inalterados

push.pushpushpushpushpushpushxor

startp2;calljeorjnztest

jzcmpje

axbxdxhpsidiex

ex, extipoer2dl,dlprsrg?ah,lnoesJonal,0d4hdosb

¡longitud inicial = 0¡determinar tipo de pseudocódigo inicial

¡es una instrucción?¡no, puede ser sreg¡es un loner?¡no¡es AAM?

¡si

Page 292: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDtCE H - ENSAMBLA-ASVI H - 279

cmp al,0d5h ¡es AAD?jne imb ¡no

dosb; mov ah,0ah ¡es AAM o AAD, instrucciones cuyo opcode esstosw ¡de 2 bytesadd cx,2 ¡incrementar longitud en 2jmp bienpaso2

unb: stosbinc exjmp bienpaso2

prsrg?; cmp dl,2 ¡sreg?¡no, errorer2jne

shl al,.Ishl al,]shl al,]or al,26hstosbinc exjmp bienpaso2

er2: jmp errp2

noeslon :cmp al, 70hjb nojcondcmp al,7fhja nojcond

sal! ore!: ¡sistosbcali tipoje er2cmp dl,4jb er2dec axcali jmpsh?ic er2stosbadd cx,2jmp bienpaso2

nojcond:cmp al,0e0hjb nolpjcxcmp al,0e3hjbe saltorel

nolpjcx:cmp al,8dhjne diflea

regmemdisp:stosbcali modregrmje er2

¡hallar el prefijo

;es un salto condicional?

¡lo siguiente es data?¡no, error

¡calcular distancia relativa¡y determinar si el salto es posible

;U)OP o JCXZ?

;LKA?

¡hallar el código de los argumentos

Page 293: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II - ENSAMBLAJ\SM u - 280

bp2;diflea:

cmpjnecalimovstosbcaüincjmpcmpjbcmpjbe

al,3er2pref?a!3bl

sizedispexbienpaso2al,0c4hnoldslesa],0c5h

;dy w deben ser 1

;byte de modo de dirección amiento

¿LDSoLES?

regmemdispnoldsles:

cmpjbcmpjastosbinclodsbcmpjedecjmp

al.OfDhalterablesal,OJ3halterables

1

ex

al,0f£hbp2sistartp2

jprefijo REP o LOCK?

si, incluir el prefijo

;empezar otra vez con lo que sigue al prefijo

alterables:

sioner:

nojc:

nori:

testjnzjmp

: testjzjmpcmpjbjmp

cmp

jamovlodsbdecmovandcmpjemovcalije

ah,2sionernoonerah,4nojcjmp o calialJOc2hnoriretointal,7nopushpopdh,al

sibl,atHOeOhb1,2Ghpprega1,dhmoclrmppnomem

;oner?

;.1MP o CALL?

;es oner.;si no es .RET o INT

;PUSH o POP?;no

;reg?;si

;no, mem?;no

Page 294: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJVSMH-28I

cmpjecmpmovJe

movespopl: stosb

inccal]cmpjeor

espop2: movstosbcalijmp

er2a: jmp

ppnomem:callcmpjecmpjaeshlshlsh]orcmpjeand

espop4: stosbincjmp

ppreg: testjzandorcmpjeand

espopS: stosb

bb,80her2aal, 7al,8fh.espoplal,0ffb

expref?al,8fhespop2bl,30ha!3bl

sizedispbienpaso2errp2

tipodl,0er2adl,4er2aal,lal,la1,lal, 7dh,7espop4al,0feb

exbienpaso2

al, 8er2aal,7al,58hdh,7espop3al50f7h

inc ex

jmp

nopusbpop:cmp

bienpaso2

al,48h

;no, error;POP?

;si, dejar su código;no, código de PUSH

;no, compensar byte de direcc.

;es sreg

;regde 16 bits?;no, error

;dejar solo los tres LSBits;poner beader de] bj'te

;TNC o DEC?

Page 295: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA.ASM 11-282

jaJDOV

lodsbdecandcmpJe

movcalijetestjzorxchgstosbcalicmpJe

oresincl: jnov

síosbcaliincjmp

noincdecah,al

sial,0e8ha1328}iincdecregal,ahmodrmer2abh,80her2abh30fehbhtal

pref?bh,40hesinclbl,8a1,bl

sizedispexbienpaso2

;registro de 16 bits?

;debe especificarse size

jgiiardar código

;TNC?

incdecreg:jodsband al, 7or a],ahstosbinc exjmp bienpaso2

noincdec:cali modnnje er2atest bh,80hjz er2bor bh,0f<5hxchg aljbhstosbinc exmov al,bhand a], 7shl al,lshí al,lshl al, 3

;aislar registro

;es NOT o NEO o etc.

;debe especificarse el size

¡guardar código

Page 296: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE H - ENSAMBLA-ASM H -283

or al,blstosbcali sizedispjmp bienpaso2

er2b: jmp errp2retointrcmp a]50cch

jne esretcali tipocmp di ,4jb er2bcmp ax,255ja er2binc excmp a]53je esint3mov ah,almov al,0cdbstoswinc exjmp bienpaso2

esintS: mov a^Occh.stosbjmp bienpaso2

esret: inc exmov bl,alcali tipojne conoffmov al,blinc alstosb

bp2a: jmp bienpaso2conoff: cmp d!54

jb er2bjne retwomov ab,almovstoswinc excmpje bp2axor al, a]stosbinc exjmp bienpaso2

retwo; cmp bJ,Oc2hje peque?

¡obtener byte de dir. completo

;INT?;no

;lo siguiente es un dato?

;TNT3?

;no; dos bytes

;si, un bute

¡preservar código

¡si no hay un fin, con offset

;opcode adecuado

¡error si lo siguiente no es un dato;si el dato es word

¡RETN?

;no, un byte mas

Page 297: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ETíSAMBLAJXSM H - 285

jmp short latalistaesfar: mov dh,3lalalista:

cali delptrcali tipoje ejcmp d!32 ;sreg?je ejcmp dl,l ¡reg?jne cvialargtest al, 8 ;de 16 bits?jz ej ;no., error

cualarg:cmp dl,4 ;datos?jae jdatjmp jnodat

jdat: push clx ;sipush axcal] tipoje jdat8o!6cmp dl,4 ;dos datos?jae jdat32pop axpop dxjmp errj

j da 13 2: mov bx,axpop axpop dxcmp dh,3je errjcmp dhj2je errjxchg aijChstosbxchg ch,alxchg aXjbxstosw.mov ax,bxstoswa cid el, 5jmp shorí jbien

jdaí8o!6:pop axpop dxcmp dh,3 ;far?je errjcmp dh,2 ;near?

;dato de 32 bits

;shorr?

;near?

;solo en este caso, el código es inalterado

Page 298: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - H - 2S6

jecmp

Je

cmpjnesubcalijnedecjmp

jnear: subsub

yaresta:movcmp

Je

incesca1U:xchg

sTosbaddxchgstosvvjmp

jsh?; cmpjnesubsuborjzcmpjne

jshort: movmovstoswincinc

jbien; xorjmp

errj: xor

jneardh,ljsh?chjOeahjnearax,2jmpsh?jshortaxshortyarestaax,3ax9dibl,0e8hch,9ahescalllblb1,al

cl,3al,bl

short jbiench,0eaherrj ;:ax,2ax,diah,ahjshortah.Offlienj

ah,alal,0ebh

c]el

ch,chbienpaso2ch,ch

;catcular distancia

;so1o se admite SHORT en JMP

jmp errp2

jnodat; cmp ;reg?jne noregl.6or dh,dh ;no debe haber restricciones deBYTEPTR, elejne errjmov bl,almov ;

Page 299: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - T2ÍSAMBLAASM: H-287

stosbincmovandorcmpjeorjmp

esjmpreg:or

fjd: stosbincjmp

noreg!6:cmpjesubmovpushpushcalimovmovincincpopjetestjztestjz

noesps: cmpjneor

nojfar: movstosbinccal]cmpjeor

jmpesjmpmem:

orfjm: mov

stosbcali

3

elal,blal,7al,0c0hchjOeabesjmpregal, 3 Ohshort fjd

al,20h

elsbortjbiendh,lenjsi, 4al,dhbpexmodrmbp,spch,[bp+l]spspbpenjbh,80bnoespsbh,3enjal,3nojfarbl,8aI,OfEh

elpref?ch,0eahesjmpmembl}.1.0bshort fjm

bl,20bal,bl

sizedisp

opcode - FF

;aislar número del registro;mod= 11ymp?

;es mem, short es inadmisible

;restaurar pseudocódigo

;especificado size?;no, word por default

;word?

;far?

;marcar FARjopcode

ymp?

Page 300: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBLAJiSlVI H - 288

jmp shortjbien

nooner: cmpjaemovcalijeorstosbcali3T10V

stosbcaliincjmp

er2h: jmpconinmed:

calijetestjzorstosbcaliinc

JWsinacc; or

stosbcalixchgstosbcalimovshrxorcaliincjmp

mayque4üh:cmpjnecaUjeandorstosbÍT1C

als40hmayque40hbh;aimodregrmconinmedal,bh

pref?al,bl

sizedispexbienpaso2errp2

modnndataer2hal, 4 ¡operación con acumulador?sinacc jnoal,bh

sizedataexbienpaso2al,80h

pref?bl,al

sizedispal,bla!3lal,.lsizedataexbienpaso2

al,84h ;TEST?noestestmodregrmtdat?alj.al}84h ;generar código

ex

Page 301: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H -H-289

tdat?:

taccd:

calimovstosbcal]jmp

xorcalijetestjnzorstosbinccal]movmovstosbcalimovcalijmpandorstosbincca.lljmp

pref?al,bl

sizedispbienpaso2al } almodrmdataer2fal,4taccdal,0f6h

expref?bh,alal,bl

sizedispal,bhsizedatabienpaso2al,]al,0a8h

exsizedatabienpaso2

noestest:

xreg:

cmpjnecalijeorjzcmpjecmpjaecmpJe

subjmptestjnzdec

al,86bnoesxchgtipoer2fd]5dler2fd!52er2fdl,4er2fdl;lxregsi, 4

;XCHG?

;mnemo?;si, error;sreg?;si, error;datos?;si, error;reg?

píoshortxmergal, 8xrlíSsi :

p-eg de ] 6 "

,noshort xmerg

Page 302: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJVSM H-290

xr.1,6: mov ah,alcali lipoje er2for d1,d1jz er2fcmp di ,2je er2fcmp di, 4je er2fcmp di, 1je x2regsub si, 5jrap shorl xmerg

er2f: jmp errp2x2reg: test al, 8

jz er2fcmp ah,8je rgenalcmp al, 8je rgenah

;el segundo operando tampoco;puede sermnemo, sreg.ni datos

;reg?

;no

;segundo reg. de 16 bits?¡no, error por incompatibilidad;primerreg. acumulador?

;no, y el segundo?

sub si,2 ;no, ninguno es acumuladorjmp short xmerg

rgenah: mov al,ahrgenal: and al,7

or al,90hstosbinc exjmp bienpaso2

xmerg: cali modregrmje er2for a1,86hstosbinc excali pref?mov al,blstosbcali sizedispjmp bienpaso2

noesxchg:cmp al,88hje siesmovjmp noesmov

;MQV?

; Lo siguiente es el procesamiento de MOV, que es bastante complejo-siesmov:push sisi

tipoer2f

Page 303: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAASM

or d1,d1jnz mnomnepop sijmp mesmem

mnomne; cmp dl,lje msiregjmp mnoreg

al,7mnoacmodrm

H - 293

msireg; testjnzcalicmpjnetest

mnoacbh,80hmacany

shlshlshlmovandxorjnzmov

macany; shrshrshrorstosbinccaliPopjmp

mnoac; popcalijejmp

nocí; lodsbandmovcalijecmpjecmp

jbcmpjnetest

bh,lbh,lbh,ldl,ala1,gal,bher2eal, dia1,lal,.lal,lal50a0h

exsizedispaxbienpaso2simodregrmnocímcasol

al, 15bj,altipoer2ed!52ra2sregd1,4er2ed!35m2byteb1,8

;niTjemo?

;reg?

;si, acumulador?

;seg, open [disp]?

;size especificado?

;sizes contradictorios?;si, error

jyolver a obtener el reg

;seg. oper, sreg?

;seg. oper. dato?

;de word?

;si, compatible?

Page 304: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDICE H - ENSAMBLA-ASMT H - 292

jzm2byte; mov

movorstosbincmovshrshrshrcalijmp

m2sreg; testjzmov.movstosb.incmovsWshlsMandororstosbincjmp

er2e: jmpmnoreg: cmp

jnepopmovcal]jecmpjecmpjeorjnzcmpjbcmpJa

calicali

er2ebp,ax

al,bla],0b0b

exa1,b1al,]al,1.

al,Jsizedatabienpaso2bl,8er2ebh,alal38cb

exal,bhal,lal,lal,lbl,7a1,blal,0c0h

exbienpaso2erq>2

d1,2mnosregdxdh,altipoer2ed1,lm2rdl,3m2mdl,dler2edl,3dher2edl,3eher2edelptrtipa

;preservar ciato;caso 3

;primer operador compatible?

;generar byte de direccionamiento

;pn"mer oper. sreg?

;restaurar slack

;segundo oper. reg?

;seg. oper. mem?

;seg. oper mnemo?

;WORD o DWORD?

Page 305: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDICE H - ENSAMBLAJES!! H -293

m2m;

m2r;

cmpjne

movmovstosbinccalicalimovsn]shlshlorstosbmovcali

J™Ptest

jzmovmovstosbincmovshlshlshlandororstosbinc

dl,5er2ebp3ax

al,8eh

exgetprefpref?al,dhal,lal3.la1,lal,bl

dx,bpsizedispbienpaso2al, 8er2ed!3alal,8eh

c,\h

al,],alslal,l

d!37al,dl

a!30c0h

ex

;despues mera?

;generar byte de dirección amiento

jmp bienpaso2mnosreg:pop si.

cmp dl,3jne er2d

mesmem: push si

;mem?;no, no mas opciones

calijemovcalícmpjecmpjnetestjnz

modrmerrmbp,dstipod]32m2srdi,].mtry.l 2al, 7mtryl2

;seg, oper. sreg?

;seg. oper. reg?

;si, es acumulador con [disp]?

Page 306: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJiSM H - 295

inccal]1TJQV

stosbcal]jmp

mtry2; xorcalijetestjnzorstosbincmovcalimovstosbcal]movcal]

-.««.>~ — Hinj J7 Ul

noesmov:cmpjnecalicmpjbcmp

movshrshrshrorstosbincmovcalijecal]andsblsnJshlor

expref?al,bl

sizedisphienpaso2al, almodtmdataer2dal,4er2d ;so]o se admite una de las formasal30cóh

exbh,alpref?a],bl

sizedispal;bbsizedatabienpaso2

UUi JJA tJWCfed.irUC.IILU UÍP WIW V

al,0d8h ;ESC?noesesctipodi, 4 ;el primer operador debe ser un datoer2dax,3fh ;deC>bitser2dah,al

a1,la1,la]50d8h

exa],ahmodnner2cpref?

a1,lal,la1,laLbl

Page 307: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EBSAMBLAASM H - 297

errs:er2c:

xorjrnp

esinouí:cmp

iconr:

esout:

jecalicmpjnetestJnzshrshrshrormovcalicmp

Je

cmpjbcmpjamovmovstoswincincjmpcmpjnemovorstosbincjmpcalicmpjecmpj^cmp

jamovcalicmpjnetest

ch.cherrp2

a!30e6h ;OUT?esouttipo ;no, JNdl,ler2cal,7errp2al,lal,lal5lal,0e4hbl,altipodl,liconrdl,4errp2ax,255errp2ah,alal}bl

exexshort bienpaso2al, 10 ;DX?errp2al,b1al, 8

exshort bienpaso2tipodl,loconrdl}4errp2ax5255errp2ah,altipodl,lerrp2al,7

Page 308: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMEEAASM jr _ jgo

jnz eirp2shr al,lshr a], ]shr al,lor al,0e6hstoswinc exinc exjmp short bienpaso2

oconr; cmp al, 10 ;DX?jne errp2cali tipocmp dljljne errp2test' al, 7jne errp2shr a 1,1shr al,],shr al,Jor al,0eehstosbinc exjmp short bienpaso2

errp2: pop expop dipop sistcjmp shortfinp2

bienpaso2;add sp,(5cíe

jSnp2: pop bppop dxpop bx

retn.enspaso2 endp

publio assem

assem proc near!

;Este es el ensamblador, que llama a los pasos 1 y 2 de compilación.5

¡Entrada: DS:SI apunta al stnng por compilarse

Page 309: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K -

•Salida:

H - 299

liS:DI apunta al lugar donde se desea el código

DS:SI es alteradoES:DI es alteradoCX longitud del códigoCY set si hay error

í

pushpushpushcidmovmovmovcalijemovpoppoppopcaUretn

assem endperror: pop

POP

popretn.

esdiax

íix,dses,axdi, offset transiten sp a solerrorsi,offset transitaxdiesenspaso2

axdies

end

Page 310: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H- MEMOHIAJVSM |_[ _ ^QQ

MODULO iVIEMORIA-ASM

.model small.486

ÁREA PARA CÓDIGO

.code

public llenarllenar proc near

¡Este procedimiento llena un bloque de memoria con un valor de byte; determina do.;Entrada: ESiDI apunta al inicio del bloque; CX contiene el tamaño de] bloque; AL contiene el valor por ponerse en el bloque5

llenar

cidpushpushrep

P°PPopretnendp

exdisíosbdiCX

public buscarbuscar proc near

¡Este procedimiento busca un stríng en un bloque de memona.¡Entrada: ES:DT apunta al inicio del bloque; CX máximo número de b}4es que deben ser explorados; DS:SJ apunta al string por buscarse; BX longitud del string3

¡Salida: ES:DI apunta al string que se encontró, o al ílnal del bloque¡ si no se lo encontró; CX >0 si se encontró, O si no se encontró

Page 311: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-A1EMOHÜUVSM H - 3 0 I

cidBuscaSír:

pushpushpuslimovrepepoppoppopjeincdecjnz

FinSrch:retnbuscar endp

exsidicx,bxcmpsbdisiex

FinS ren-díexBuscaStr

public copiarcopiar proc near

;Este procedimiento copia un bloque de un lugar a otro en la memoria.¿Entrada: DS:SJ apunta al inicio del bloque por copiarse; ES;DT apunta al inicio del destino; CX .numero de bytes por copiar

push- sipush dipush excmp di, sije fincopiarja invcopiarcidrep jnovsbjmp sh ott fin copi ar

invcopianadd si,cxadd di, exdec sidec disldrep movsbcid

fincopiar:pop expop dipop siretn

copiar endpend

Page 312: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-MEMORIAJVSM r» _

PROCEDIMIENTO CBILD486.ASM 1

dosseg.mode] large ;small

ÁREA PARA CÓDIGO

.code

¡Este es un overlay que Ja permite a un programa bajar de nivel haciendo EXEC;de este programa, tras haber instalado un handler de 63H que traslada el;control al programa con la función 80h.

sfarf: rnov ax^OSOhint 63h

mov ah,4ch jnunca Hega aqui, esfó es solo por si seint 21h ;ejecuta este programa sin e] handler de laencl start ¡interrupción 21h instalado,end

Page 313: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDICE jr-JMMACASM H - 303

MACROS DNIMAC.ASM

Macros usados en eí archivo INICIAL. ASM

;Macro Parámetros Función.

; actuar; ayuda;bufcla;curs; explica;getkey;gefmnacjgetxpr;guarpantallajiluminaop;inbuff;indinac;lmppntpnenaba;menarr;mender;menizq;menulinea;memivent;mostrar;movbuf;nocurspiunrve]jopcion?;pchar;pmenu;posdir;restpantalla;ruh"najsalvareg;statusf

salta a una de las dir. en una tabladir,nlin,co1or presenta ventana con instrucciones

pnclave,pbuf encuentra Ja posición de un bu'fferx pone un "cursor" en x,24pnclave muestra Ja explicacion(PNCLAVE)

recibe dato del teclado (BIOS)da el # del macro con nombre en NOMBUF

obtiene ultimo nibble oO en BUFFJiRguarda una pantallaresalta la opción actual

dir recibe string desde teclado (BIOS)da una lista de los macros en e] índice

Jimpia la pantallacursor abajo en ventana de subopc,

cursor arribacursor a la derechacursor a la izquierda

pnclave muestra menu(PNCLAyE)muestra menú en forma de ventana

pdir,plin,pcol muestra pregunta y espera respuestapbufl,pbuf2 PBUFJ <--PBUF2x pone atributo normal en x,24pbuiT5pniv}pnum pone PNUM en PBUF(PNTV)

espera que se elija una opcióncar escribe CAR (DOS)pnlin,pcolor muestra menú string apuntado por AXpvarx,pvary,dir conviene pos. de pantalla en dirección

restaura ultima pantalla salvadapasa control al usuario y lo recibepush a todo

muestra fase del programamuestra datos importante del usuario

;traereg pop a todo;valida? ve si una opción es del menú del usuario

Page 314: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H- ttOMACASUT

;subrut

|.[ _ 39 .j

subnitinas de todos los inacros

***************¡Busca el AL-esimo elemento de la tabla de direcciones¡que ira después de MTABLA para saltar a esa dirección.actuar macro

local mtablapush bxjnov bXjQiTset mtablacali mactpop bxjmp dword ptr diract

mtabla:endm.

.****** ***************¡Escribe NLIN lineas separadas por ceros desde DIR en COLOR.¡Ocupa columnas 1 a 78 y las filas del centro de la pantalla.ayuda macro dir,nlin,color

push axpush exmov cl,nlinmov ch, colormov ax, offset dircali maypop expop axendm

-****** TJTTFCT A ***************¡Busca PBUF en TABBUF y pone su ubicación en PNCLAVEbufóla macro pnclave,pbuf

push sipush ax

si, offset pbufmbcaljinbcbytepnclave,alaxsi

m ovcalimovmovpoppopendm.

.****** CURS ***************

¡pone el atributo de (x,24) en inverso.curs macro x

push. ax

Page 315: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-DJIMACJvSM H - 306

endm

.****** TNJRTTp]7 ***************

;Recibe desde el teclado el buffer DIR cuya longitud se indica en;el primer byte del buffer. En el segundo byte se obtendrá eljnumero de bytes recibidos. Solo se aceptan letras o números.;Para edición, solo Backspace. Pita si se ha llegado al limite.inbuff macro dir

push simov sijOfíset dircali mibpop siendm

-****** JWQM^C ***************;Llena la lista LTSMAC en base al índice de macros;en AREAMAC. Reemplaza los ceros por espacios (20H).indmac macro

cali mi.mendm

.****** TA/JPpMT' ***************

;Borra la pan tallaImppnt macro

push dipush expush axmov cx32000mov di, Omov ax,0720hrep stoswpop axpop expop diendm

***************;Mueve cursor abajo en la ventana de subopciones.menarr macro

cali mmabendm

***************^Similar a MENABA.menaba macro

cali mmaendm

Page 316: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE TT __

.****** ]v.rBNDER ***************¡Mueve cursor de opción actual a la derecha.mender rnacro

cali mmclendm

.****** A/IFNTZO ***************¡Similar a MENDER.menizq macro

cali mmiendm

A/rRNTJL INli A *************¡Muestra menú (PNCLAVE)menulinea macro pnclave

push exinov cl,pn clavecali mmlpop exendm

**************¡Muestra menu^CLAX^l) en forma de ventana.menuvent macro

cali mmvendm

MOSTRAR ***************¡Muestra pregunta apuntada por PDIR y espera respuesta. La pregunta;debe tener esta forma: Mensaje, O, # de respuestas, lista de¡respuestas. En AL saíe el numero de la respuesta elegida,mostrar macro pdir,plin,pcol

push axmov ah3plinmov al,pcolmov moslin,ahmov moscoljalmov ax, oífset pdircaj] mmospop axmov aLmnmosendm

***************¡Mueve PBUF1 a PBUF2.movbuf macro pbuf2,pbufl,

push si

Page 317: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE li-iiiiinHwjuii>i TT -íf\Q

push dimov si,offset pbuflm ov di, offset pbuf2cali mmbpop dipop siendm

XfOCURS ***************;pone el atributo de (x,24) en normal,nocurs macro x

pushmovmovcali

POP

endm

axaljXab,bnnormmcuax

5

¡Pone PNUM en el buffer PBUF en el nivel PNTV.nunivel macro pbuf,pniv}pnum

push expush dxmov cljpnivmov chjpnijmmov dx} ofí'set pb ufcali mnnpop dxpop exendm

OPCIÓN? ***************¡Espera que se digite una opción. Saca en MOPACT el numero de;opcion. Las opciones son: Kechas,ENTER,/vOJ/>'K,ALiAP y oíros.¡Ademas es aquí donde se almacenan los datos al grabar macros;y se leen de] macro en vez del teclado al correr o probarlos.opción? macro

cali mopendm

;Usa función del DOS para escribir CAR en pantalla.pchar macro car

push dxmov dl,cítrcali mpchpop dx

Page 318: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-HÍEVIAC-ASM H - 309

en clin

.****** pJyT£]vJTJ ***************

¡Muestra menú apuntado por AX. Al salir MPMPRX¡da la dirección del primer byte luego del 0.pmenu macro pnlin,pcolor

push expush dxmov cljpnlinmov clh}pcolorcal] mpmpop dxpop exendm

.***#** pOSDJR ***************

;Da la dirección PDIR correspondiente a (PVARX,PVARY)¡para acceso directo a la memoria de video.posdir macro pvarx,pvary,pdir

push axpush bxpush exmov cl,pvarymov bl,pvarxcall mpdmov bx,mpddirmov pdir,bxpop expop bxpop axendm

**********;Trae de PANBUF la ventana que flie salvada en GUARPANTAJXA.restpan talla macro

cal] mrpcali funcionesendm

RUTINA ***************

;Pone la dirección de la rutina(NCLAVE) cíe usuario en DIRS AL y la de¡regreso en MRAUX2 y A/DR.AUX3. Pasa control al usuario, que debe regresar¡poniendo RETORNO al fin cíe su rulina para regresar a MRUT1.niíina macro

mov conclavemov al3nin.fbufmu] el

Page 319: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE M-HíJilACASM H - 3] O

addaddmovmovmovmovmovmovmovmovmovmovmov

jmpmrutl; mov

cmpjemovmovmov

mrut2:endm

ax'j offset tabinfax'j4si,axbx,[si]al,[si4-2]tiprut,alrnrauxl,albp, offset dirsalds:[bp],bxds:[bp+2],csbx, offset mrutlmraux23csmraux3,bxdword p1r dirsalal/fipruta^mrauxJmrut2contraer, Offhx,ly,o

¡busco dir. de rutina(nclave)

;y lipo denitina.¡Preparo el salto.

¡guardo lipo de rutina.

¡Preparo dir. de regreso.

¡Control al usuario.¡Regreso a FLUJO.

¡Ha cambiado TIPRUT?

¡si, cod. de error de rnacros,¡ademas X,Y previos pueden¡estar errados.

.****** g/v.UVARJEG **************¡Pusb a todo,salvareg macro

push eaxpush ebxpnsb ecxpush edxpush esppush ebppush esipush edipush dspush espush ssendm

******* STATUSF ***************

¡Presenta 6 bytes apuntados por FASEPTR en (73,23)¡Se usa para indicar Ja fase actual del programa,statusf macro

cali msfendm

.****** ***************

Page 320: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-DOMAC-ASM H - 3] 1

¡Presenta 6 bytes apuntados por VAIPTR en (73,24);Se usa para mostrar importantes datos del usuario.statusv macro

cali msvendm

***************.******;Pop a todo.traereg macro

pop sspop espop dspop edipop esípop ebppop esppop edxpop ecxpop ebxpop eaxendm

.****** \?AJ TDA? ***************

;Si en OPCIÓN? se dígito una opción distinta de las que maneja¡normalmente, ACTUAR manda el ílujo acá para ver si es una opción¡puesta por el usuario en el memi. Si es asi, AL-^numero de opción.;Si el primer byte después de la ultima opción del menú es FF se;supone que la ultima es la "opción de escape" para todas las¡posibilidades que no consten en el menú.valida? macro

cali mv?mov al,tnv?auxendm

.****** SUBRUT

;Este es un macro que contiene todas las subrutinas llamadas por los¡otros macros de este archivo. Se hizo de esta manera para evitar el;uso de demasiadas banderas, y que su ausencia no produzca "Phase¡errors" al momento del ensamblado.subrut macro

inact:salvaregdec almov cl,2muí eladd ax.bx

¡pongo el AL-esimo elemento de la¡tabla en DIRACTy CS en DIRACT+2¡para hacer el JMP al regresar.

Page 321: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE H-ESTMAOASM H-312

movpushmovmovpopmovmovtraeregretn

bp, offset diractsisi,axbXjCS^si]sids;[bp]jbxds:[bp-f-2]5cs

may:

mayl

rnay2:

dxbxbx,axdl,23di, el

; centro el texto en pantalla:;linea inicial" (23-#lineas)/2 -1

di

pushpushmovmovsubshrdecmovdec maylinmov maycoljchmov ax, offset blancopmenu maylinjmaycol ;primero una linea en blanco.inc maylinmov mpmprx5bx:mov ax,mpmprx ;Ahora el resto de lineas. MPlVlPRX

pmenu may^Xmaycol ;da la dirección del primer byteinc maylin ;despues del 0.dec eljnz may2mov ax, offset blancopmenu maylin,maycol ;Linea en blanco al final.pop bxpop dxretn

mbc;salvaregmov al,nmaxbuf ;Busca un buffer en la tabla TABBUFcmp al, O ;y entrega el numero clavejne mbcO ;que servirá para obtener toda lajmp mbc4 ;informacion necesaria acerca de la

mbcO: mov mbcmenu,0 ;opcion representada por el buffer.mov mbcbuf}si ;Si el buffer no existe, c!ave~KF.mov tnbcpos, offset tabbuf

rnbcl: mov mbcbyteiOmov bx,mbcbuf

Page 322: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-IHIMACJiSM

mbc3:

mbc2:

mbc4:mbc5:

movincmovxormovincmovcmpjnzcmpjnzmovjmpíncmovcmpjeaddjmpmovmov

traeregretn

ah,[bxlbxbp,mbcpos

chjChcl,mbcbytembcbytedi,cxah,ds:[bp+di]mbc2mbcbyte, 8mbc3al, mbcmenumbc5mbcmenuah,nmaxbufah, mbcmenumbc4mbcpoSjSmbclaljOfthmbcbyle,aí

iticu:salvareg ;Pone el atributo dado por AH enposciir 0,245mcudir ;la posición (AL,24)mov sí,mcudírmov bh.ahmov el, 2muí eladd si,axinc simov es:[si],bhtraeregretn

mex:satvareg ;Busca en TABINF la dirección de lamov a!3niníbuf ¡explicación y la pone en linea 23.muí cíadd ax5oífset tabinfmov bx,axmov íix,[bx"Jpmenu 24jColexptraeregretn

Page 323: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - 314

mgk:

repetir:;Uso función del BTOS que espera

mov ah,0bhint 21hcmp al, Oje verraton

siguiente:mov ah,Qint 16hjmp short íinmgk

verraton:cali pantallacmp bXjGffhje repetir

finmgk:cmp ax}3bOOhjne nofl.mov ventjl

nofl:mov getword,axtraeregreí

;que se pulse una. tecla.

rngn:

ragn]

salvarespushpushpopmovinccmpjemovaddmovmovmuíaddincraovrepejneaddmovjmpmov

s ^Busca si el nombre en NOMBUF estaes ;en la lista de raacros y da su numerocls ;+80h en NUMMAC si asi ocurre. Si eses ;nuevo, da el # del primero libre.dh,0ffh ;Si ya no hay espacio, da FF.

dhdh,8mgn2si, offset nombufsi,2 ;bytes O y 1 son de uso de otro macro.di, offset areainacal}8dhdi,axdi ;byte O es la longitud del macro.cx,7cmpsb ;comparo.

;si no es igual, comparo otro.;macro viejo.

;Busco primero libre.mgn4dh50ifh

Page 324: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APETCDICE H-315

mgn21: inccmp

Je

dhdh,8mgn3

mov di,offset areamacmov al, 8

dhcli,axal50ex, 8scasbmgn21

mov rmmmac5dh ;macro nuevo,jmp mgn4

mgn3: mov nummac}0ffh ;macro nuevo sin sitio.mgn4: pop es

traeregretn

max:

muíaddmovmovrepe

mgxJ

salvaregmovshrxormovaddmovmovshrshrshrshrcmp

jzmovmovtraeregretn

el, nivelcl,lch}chsi, offset:si, exal, [si]ah,ajah,lah,lah,lah,lah,0mgxlal,ahxprev}al

;se divide NIVEL/2, se suma a dirección¡inicia] de BUFFER, y se obtiene el msn¡distinto de O en ese byte.;Ese es el ultimo nibbleOQ en BUFFER

mgp:salva reg ;paso pantalla a PANBUF.xor si, simov dí} offset panbufmov bx,dsmov es,bxmov ds,videosegmov cx,3680rep movsbtraereg

Page 325: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - INIMACJVSM H-316

mío:

retn

salvnreg ¡Resalta la opción actual, dada por X.mov es}vjdeosegmov dl,co1lactmov al,x

inio!3: posdir l,l,iniodírmov syniodirmov di, sipush espop dsmov c],al

mio.1.31: loclswcmp al,2Ghje mió] 31sub si, 2dec eljz mió 16

mió! 4: loclswcmp al,20hjne mió] 4

miol5: lodswcmp al,20hje miolSdec sídec sidec eljnz mió 14

mió] 6: mov di,silodsvvmov ah,dlcmp al,20hje mió 17cmp al, Oje mió] 7stoswjmp mio!6

mio.l 7: traeregretn

;collact=video inverso

¡trabajo directo en pantalla.;busco la X-esima palabra en la

;linea 23 y cambio su atributo.

;salto espacios iniciales.

;salto palabras.

;resalto palabra.

mib:salvareg ¡obtengo string desde teclado.mov cl,[si] ;maximo # de caracteresmov cb,0 ; contadormov dXjSi ;puntero auxiliaradd si,2 ;b>tes O y 1 de uso del macro

Page 326: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-317

jnejmp

; cmpjne

mibl:

mib2:

mib21

mib22: cmpjbcmpjnbcmpjbcmpjbcmpjbcmp

posdir l,24,mibdirmov bx,mibdirmov mibx,chinc mibxcure mibxgelkeycmp al,08h

mib2.1mib4a^Odhmib22mibSal,3Ghmib2al,7bhmib2a1,3ahrnibSa1,4lhmib2al,5bhmibSa1,6lhmib2al,20h

;direccion de primer carácter

submibS: nocurs mibx

cmp ch3cljne mibSlpchar 07hjmp mibl

mibSl: mov [si],alinc simov es:[bx],aladd bx,2inc chjmp mibl

mib4: nocurs mibxcmp ch,0jne mib41pchar 07h

;Backspace?

;Enter?

;es un numero?

;"9"<aK'fA"?

;es una mayúscula?

;es minúscula, hacer mayúscula

;contador=maxtmo?

;si, beep.

;AL al buffer;apunto prox. dirección

;AL a pantalla¡apunto prox. dirección

;contador-Kl.

;buffervacio?

;si, beep.

mib41 decmovsubmovdec

miblsi ;borro ultimo carácterbyte ptr[si],0 ;en el bufferbXj2 ;y en pantallabyfeptres;[>;]32Qhch ;contador-lmibl

Page 327: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - 318

mib5: nocurs mibxmov si}dxinc simov [sijjChtraeregretn

mim:salvaregpush espush clspop esmov si, offsetmov dijOffsetmov di, 8

miml: inc simov al,20hstosbmov el, 7

mim2; lodsbcmp al,0jne mim 3mov al,2eh

mim3: stosbdec eljnz mim2dec dijnz mimlpop estraeregretn

mmab;

;fin de rutina; byíe 1¡indica # de bytes recibidos.

;pone la lista de macros actual;en LJSMAC. Reemplaza los 00 con;2E (puntos).

areamaclismac

salvaregmov conclave!. ¡Busca el # de subopciones que tienemov al,ninfbuf ;el menú de la opción actual dada pormuí el ;NCLAVE1. Si Y supera ese #, Y-0.add axsoffset tabinfinc axinc axpush bxmov bx,axmov si,[bx]pop bx

mmabl: lodsbcmp al;0jne mmabl

Page 328: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H- IKIMACJiSM H-319

lodsbincinccmpjne.mov

mmab2; traeregreín

mina:salvaregmov cmovmuíaddincincpushmov

alyal,ymmab2y50

al,ninfbufelaXjOffset tabinfaxaxbxbx,ax

;Busca # de subopc. de menu(NCLAVEl);Si Y=FF, Y igual a ese #.

mov si,[bx]pop bx

tnmal: íodsbcmp al, Ojne mmallodsbdec ycmp y,>0fírijne mma2mov y, al

mtna2: traeregretn

mmd:salvaregmov conclave ;Busca # de opciones de menú actual,mov a^ninfbuf ;Si X supera ese valor, X~l.muí el ;Siempre Y=0.add aXjOffset tabinfinc axinc axpush bxmov bx,axmov si,[bx]pop bx

mmdl: íodsbcmp al, Ojne mmdllodsbinc al

Page 329: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - UíEMAC-ASM a-320

me xcmp aljXjne mmd2mov x,l

mmd2; mov y,0traere

;a la derecha.

mrm;retn

salvaregmov conclavemovmu]addincíncpushmovmovpop

elax^offset tabinfaxaxbx

;^u.sca # de opciones de menú, actual.;Si XK>> X igual a ese #. Siempre Y=0.

si,[bx]bx

mmil; lodsbcmp al,0jne mmillodsbdec x

x>0_mrnÍ2

mov x,almmi2; mov y,0

traeregretii

mml:

meincmovmov

pushpushmov

otraletra:lodsbcmpjnelodsb

salvaregmov al,ninfbu.f ¡Muestra e! menu(CL) y resalta lamxil el ;opcion actual.add, ax,oííset tabinf

axaxbx.ax

saxsi>ax

otraletra

Page 330: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-INWAGASM H-321

movpoppoppmenu. ^ilumina op

traeregretn

numeroop^laxsi

mmv:salvaresmov c],nclave1mov al,ninfbuf

elax,offset tabinf

muíaddaddmovcmp

;Muestra ventana se subopc.¡primero veo si la opción;tiene algún submenn,

;Si es asi, la rutina;debeserdetipo3.

bx,axbyteptr[bx]>3

J2, mmv3jmp mmv?

mmv3; mov conclavemov al,ninfbvrf

elax,offset tabinfaxaxbx

muíaddincincpushmov bx>amov si}[bpop bxmov cl}0mov <n,x

mmv30: lodsb

;Ahora busco la dirección;del menú al que pertenece

;esta opción en

elal,20hmmv3Qx,lmrnvSlel

nccmpjecmpjnzdecmovjmp

mmv3 1 ; decmmv32; lodsb

inc elcmp aljne mmv32

rnmv33; lodsbinc el

;Sr apunta al inicio del menú,;Yoy a contar los bytes hasta;la opción actual (x) para saber;columna inicial de ventana,;SaIto espacios iniciales

;pero los cuento.

;si x^l ya tengo la columna.

mmv4di ;DL- cuantas opc mas debo saltar.

;Cuento bytes hasta encontrar;un espacio (CL contador).

;sumo espacios entre opciones

Page 331: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - IN1MACA.SM ti-322

cmp al»20hje mmv33dec dijnz mmv32dec elmov

mmv4; movmov conclave!mov alsninfbufmu.1 eladd ax^ofTset tabinfinc axinc axpush bxmov bx,axmov sí}[bx]pop bxpusb si

mmv40: lodsbcmp al,20hje mmv4Qdec simov cx,1

mmv4'|; lodsbcmp al,20hjz mmv42cmp a!,0jne mmv410mov mmvlin,c]jmp mmv5

mmv410: inc chcmp cb^mmvcarjb mmv41mov mmvcar,,chjmp mmv41

mmv42; lodsbcmp al,20hje mmv42cmp a 1,0jne mmv43mov mmvlin,cljmp mmv5

mmy43: inc elmov ch,0dec sijmp mmv41

mmv5: pop sí

;nna opc menos que saltar

¡Termino. Ventana empieza en;cohimna anterior.

;Ahora busco dirección de menú;asociado a la opción actual

;enTABÍNF

;SI apunta a primer byte;de ese menú

;no tomo en cuenta los;espacios iniciales.

;Veo cuantas filas y columnas;ocupa Ja ventana;Los espacios no cuentan

;tennina si AL^O

;# de subopciones d.el menú.

;CH; # de car de subopcion;MMYCAK; máximo CH logrado

;saltar espacios

¡termina si A.C=Q

;# de subopciones del menú

;otra subopcion;# de car= O

Page 332: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H.-INEMA.C.ASM H - 323

;Busco la linea inicial;de la ventana incluidas;dos lineas de recuadro.

;servirá después

mov al,mmylininc alinc al

mov a\add. ab,al

mov miTivlin^ahmov mmvlinl,ahinc mmvcarposdir mmvxlsmmv]m,mmvdir ;dir. de esquina superiormov di,mmvdir ;ízqxjierda en pantallamov es/videoseg

mov al,esqiimov ah,co!venstoswmov aljinsupmov c^mmvcarxor ch^chrep stosw

mov al>esqidstosw

mmy50; ÜEC mmvlinmov blsmmvlin

cmp bl,2je mmv6posdir mm\'xlímmvlin)mmvctir ;escribirlas subopcionesmov di,mmvdir

;pero antes el recuadro.;long cíe la linea

;dibujar esa esquina;en coior d.e ventana

a linea superior

;dibuja esq. sup, der.

;proxima linea

;linea inferior si BL=22

mov al,Hn1atmov bljmmvcarstosw

mmySOl; lodsbcmp al^Ohje mmv501dec si

mmv51; lodsbstoswdec blcmp al ,2 Ohje mmv$2cmp al, Ojne rnmv51dec didec dimov al,2 Ohstosw

mmv52; cmp bl>Qje mmv53mov

;no tomo en cuenta los;espacios iniciales

;leo b3"te del menú;lo escribo en pantalla

;He terminado la opción?

;He terminado el mentí?

;en ,gse caso borro el OOH;que escribí

; y pongo un " "

;lleno el resto de la linea;COTI espacios

Page 333: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - INIMACASM I I - 324

rnmv521: stoswdec bljr\z mmv521

mmv53; mov al,linlatstosw

mmv54; lodsbcmp al,2Qhjz mmv54dec sijmp mmv50

mrov6: posdir mmvxl,mov di,mmvdir

mov a!,esqsimov ah,co1venStoswmov

;y termino con recuadro,

¡sallo espacios

¡dibuja linea inferior

movxorrep

movstoswcmp

alj insupc!smmvcarchjchStpswa^esqsd

bl,mmvlmlbl,aimmvlin,bLmmvxl,!d^mmvdir

bl,mmvcar

;fín de dibujo de ventana,¡existe subopcion seleccionada?

;no» termina trabajo,¡si, resaltarla cambiando

¡el atributo de la linea.

y,ojz mmv?

mov al,vmmv63: mov

submovposdir

movmovaddmovmov

mmv64: stosbinc didec bljnz mmv64

mmv?; traeregretn

mmos:salvaregpmenu mosÜn^noscol ¡Presenta pregunta y espera respuesta.mov sí,ax

mmosO: lodsbcmp a 1,0jne mmosQmov

Page 334: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKNDICK H-IMMAOASM H - 325

¡comparo y si no es ninguna de las¡posibles, vuelve a pedir respuesta.

mmosl: lodsb ¡Obtengo el # de opciones.mov cl,almov dljíilgetkey ¡obtengo respuesta.cmp als'a' ¡minúsculas --> mayúsculas,je mmosl 1cmp aVz'-Hjnc mmosl 1sub al>2Qh

mmosl 1; mov bx,axmmos2; mov al,[si]

inc si

sub cIJje mmos4cmp aljOje rnmosS

mmosS; cmp al>bljne mmos2jmp mmos5

mmos4; mov si}mdiropjmp mmos!

mmosS; sub dl»clmov mnmos,djtraeregrem

mmb;saivaregpush dspop esmov cxj8rep movsbtraeregretn

de respuesta en M,Mv10S.

¡mueve 3 bytes.

mnn:

mnn4; movmnnl; shr

saivaregtest cl.ljz mnnlmov ai, 16muí chcmp al,0jnz mnn4mov ch,Qfhmov alsOñ"hjmp mnnl

ch>al

¡pongo CHen el Ct-esimo nibbie¡del bu ffer apuntado por "DX,

cU

Page 335: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

i U - IMMACASM H -326

mov Dl jCixor bh,bhadd bx,dxcmp ch,0jz mnn5cmp aÍ3Offhjnz mnn2

mnn5; and [bx],chjmp mnn3

mnn2; or [bx],chrnnn3: traereg

retn

mop:salvaregmov cl,nclavelmov al,ninfbufmuí el

¡maneja opciones.¡Primero veo de que tipo es la¡opción actual. (Esto es usado

¡al salir de este macro).add ax,oíTset tabínfadd ax}6mov sí,axmov a1,[si]mov íipnitl ,alcmp bmacjje mopljmp mop2

mopl : mov al,longmacinc alcmp aljContmacjne moplOmov bmac,0mov Iaseptr}orTsetstatus fjmp mop2

¡Corriendo/probando macro?

¡si.

¡termino?

¡si,fnorm ¡fase normal

moplO: mov sijOffsetbufñnac ¡estoy en macro,pusVi axmov al,contmacxor ah.,ahadd. ax,axadd si,axpop axmov bx,[si]inc contmaccmp Qontmcr,0í:í:hje mop 12cmp bver,0je mopl 3

¡leodatode'BUFFJVlAC

¡fín de ejecución por¡flujo ambiguo?

¡probando macro?

Page 336: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AJ'KNniCE II - IWMACASM 13-327

mopll; getkeycmp al,crje moplocmp al, ctrl kjne mopll

mop!2; mov bmac,Qmov bver>Qmov bx,0ff00hmovstatusf

;sis espero ya sea;ENTER para seguir

;oAK para terminar.

;termino prueba,

;no ejecuto ultima opciónfaseptr,offset fhorm ;fase normal.

jmp mopjmop2; getkey

cmp bgmac»0jnejmp

mop21; movcmpjecmpjemovxoraddadd

mop21mop3

contmcr,0fí"hmop22

;tomo el valor del bufTer;en vez del teclado.

;no es macro,dato d.e teclado,;grabando macro?

;si, fin macro por razones de;rutina de macros d.e usuario?

;si\termíno de grabar?mop22bljContmac ;grabo dato en BUFFMAC

bx,bxbx^offset buffmacds:[bx],axcontmaccontmac,maxmacmop23mop3

;y cuento # de datos. No eje-;cuto la primera en exceso.

movinccmpjeJmP

mop23; mov bx,axdec contmac ;exced.i el límite,mov ax,offset blancopmenu 24,colexpmov ax,offsel escmcrpmenu 23,collact

mop231: gelkeymov ax,get\vord

al,Tbh ;ESC?mon231

al,nummac ;paso datos íil área d.e macros.

cmpjne

mop22; movmov clsSmuí eladd ax,offset areamacpush espush dspop es

Page 337: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

U - INIMAC-AS.M H - 328

¡long, del macro,

¡y nombre

¡ahora paso BUFFMAC;nl ajea que empieza

mov di>axmov ai,contmacmov [ci']>alinc d.imov sijOffset nombmacmov c,x,7rep movsbmov al,mimmacmov c]>2*maxmí¡cmuí el ;con MAC]. Cada macroadd ax.offeet rrmcl ¡ocupa 2*MAXMAC bytes' * -i -f

mov d,Í,ax ;o MAXMAC wordsmov sisorTset butTmacmov cx,maxmacrep movswpop esmov bgmaCjO ¡termina grabaciónmov faseptr,offset fhorm ¡fase normal.statusf

¡ejecuto la ultima opción¡es un car.especial?

mov ax,bxmop3; Qinp aljO

je mop32mop31; cmp al,cr

jne mop311mov als5jmp mop4

mop311: Qmp aljQÍrlojne mop312rnov a 157

jmp mop4mop312; cmp al^ctrlp

jne mop3l3mov alsSjmp mop4

mop313; cmp al,ctrlivjne mop31.4mov a 1,9jmp mop4

mop314; cmp a!,lbhjne mop315mov al, 10jmp mop4

mop315; mov mopaux,almov a1j6jmp mop4

mop32: cmp ah,fleizqjne mop321

;no, es Enter?

;es A0?

;es AP?

¡es AFC?

;es ESC?

;es otro?

;es <--

Page 338: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II - 1NIMACASM H - 329

mov aljjmp mop4

mop321; cmp ah,flederjne mop322mov a 1,2jmp mop4

mop322; cmp ah,,flearrjne mop323mov al,3jmp mop4

mop323; cmp ahsfleabajne mop324mov al,4jmp mop4

mop324; mov mopaux.l,ahmov rnopauXjOmov al,6

mop4; movcmpjne mop5restpantalla

mpp5; traeregretn

;es ~>

;es flecha arriba?

;es flecha abajo?

;es otro.

;tengo ventana de opciones?

pantalla.

mpch:

mpm:

salvaregmov ah52int 21 htraeregretn

salvaregpu.sh dx

;Uso rutina del DOS para escribir DC.

mov

movmuímovmovpopmovpushmovmovreppop

51, a xaljonglin

eles,v¡deosegdi,axdx.ah,dhcíial,20hcx^SOStQS\

di

;pone'un stringterminad.o en O;e:n linea, Q,L con atributo OH,;EL string es apuntado por AX.

;borro la línea.

Page 339: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKNI11CE H-INIMACASM i_, _ -,-ír,

inc di¡nc di

inpmO; lodsb ;pongo el string,cmp al,0je mpmlStpswjmp mprnO

mpm i : mov mpmprx,si ;MPIvíPRX apunta a próximo string.traeregretn

mpd:salvaregmov al,16Q ¡Dirección = C1>*160 -f- BL.muí elxor bh,bhadd axjbxadd ax.bxmov mpddir^xtraeregreln

mrp:salvareg ;Paso PANBUFa pantalla.xor dijdimov es,videosegmov síjoffsel panbuf

rep movsbtraeregretn

msf;salvaregmov si/aseptr ;FASEPTR tiene la dirección de unposdir VS^^msfdir ;stn"rig de 6 byíes que debe sermov di,msfd,ir ¡mostrado en la posición (73,24).mov cx>6mov ahjcollact

msfl; lodsbstos\d.ec exjnz msfltraeregretn

msv:salvareg

mov si,valptr ; VALPTR tiene ia dirección de un string

Page 340: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-BTIMACASM e-331

posd.ir 67,24,msfdír ;d.e 6 byíes en eS qu.e el usuario puedemov di,msfdir ;poner algo para aparecer en (67,24).mov cx_,6mov a

msvl; lodsbstoswdec ex.jnz msvltraeregretn

mv?;salvaregrnov conclavemov a^ninfbu.fmuí elad.d ax,offset tabinfinc ax

;Bu,sca si la elección esta;en el menú del usuario.

mepushmovmovpop

mv?1: lodsbcmpjnelodsbmovmovpushpushmov

xoraddcmpjnemov

m,V?ll; pgp

popmovcmpjbcmpjasub

mv?2; movmv?21; lodsb

axbxbx,ax3<>[bx]bx

aI,Qmv?1

cl^a Idl,alsi&K

Tnv?aux1 jOah.,alisi,axbyíe ptr[si]my?llmv?auxl,alaxsía^mopauxal'a'mv?2alj'z1

mv?2aJ»20hbl,al

;ST apunta al menú

;&r apunta a primera opción;AL tiene el # de opciones

;si el primer byte después;de las opciones validas

;es 'FF, entonces evacuar;las teclas no validas

fh ;por la ultima opción,

;d.ejoMV?AXJXl, como bandera

;A las minu.sculas

;la,s hago mayúsculas.

Page 341: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-INIMACASM H-332

cmp al,blje mv?3dec eljnz mv?21cmp mv?aux1 ,0je my?22mov al,mv?aux.lmov mv?aux,alxor ah,ahjmp mv?4

my?22; or al,ljmp my?4

mv?3: d.ec elsub dljdmov mv?aux,d:lxor ah^ab

mv?4: traeregretn

;veo si opción es valida

;no fije valida, veo si hayiruíina de escane> l ....... • -,r ^

;si ha}r esa nitina;salgo con respuesta

;yZF=l

;no esa

;opcion valida,;guardo respuesta

;y salgo con ZF=1

endm

Page 342: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AJMitXDICE ll-MPRO-AS.M H - 333

JVIACRO MPROASM

iMacro Parámetros Función

;fí Jimac.rosalta a la, Ar.-esjrna dir, de urja tabla

SÍÍÍ?. Trjflorri v dñ \\n

;getdata x^;getdata2 x^;getline buíT;limpln nu;lmppnt;print x,y,d.ir(atrib;rest23;salva23;usrpro;sbrpro

lee un bin, hex o declee un dato en hex (para mamona relativa)

lee un síring del tecladoborra una linea

borra pantallapone un texto en pantalla

restaura linea 23salva linea 23intercambia pantallas de usuario y PROsu.brutinas de los otros maceo

•};Macro-instuicciones para macro-comandos

;Macro Parámetros Función

;cerrmcr;creamcr d.irnom;grabmcr¡getkey;ínimcr dirnom¡Impmcr;rtodo;stodo;sbrmcr

cierra archivo de macroscrea archivo de macrosgraba y cierra archivo de macroslee teclad.o o buífer de macrosabre y lee (o crea) archivo de macrospone O en las áreas de macros

pop todopu.sh todosvjbnitinas de los otros macros

***************;Lee el A.C-esimo elemento de la tabla TABACT y salta a la dirección;dada por ese elemento, AL=Q para el primer elemento de la tabla.actuar macro

local tabactpush símov ah}0

Page 343: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE IJ-MPRO-ASM

add ax,axmov síjoffset tabacta cid si4axmov ax3cs:[si]pop sijmp ax

tabact;end.m

**************

;Da u.n mensaje de fin de macro y espera un ESC para seguirfínmacro macro

cali rfípmendm

QRTQU'AR ***************

;Ue en GCASCtt un ASCH del teclado o buffer de magros. En GCCOD;sale el siguiente código: O, hay dato valido en GCASCTI. 1 , ENTER. 2}

;TAB. 3, SHIFT TAB. 4, ESC, 5, alguna fiíncion o tecla especial, cuyo;ASCn extendido sale en GCASCTT. Para que ENTER, TAB, SHTFT TAB y;ESC sean aceptados como datos normales, se debe presionar antes Fl 0.getchar macro

calí rgchend.m

.#***** rj'píTDATA ***************

¡Lee d.atos del teclado o buffer de macros en BUFF. En BUFF se tiene;;# de byíes pedidos» # de datos leídos, datos, # convertido en hex;(4 bytes). Hace eco en pantalla en (X,Y). Qe acuerdo al TIPO;recibe datos en bin ('b'), hex ('h% clec ('d')> La longitud de;BUFF debe ser adecuada; bin, cualquiera; he.x, 2 O 4 bytes; dec, 3;o 5 bytes. Si se presiona DEL o BS se borra el ultimo dato ingresado.;ENTER es esperado para confirmar un dato y convertirlo en hex. En;GCCOD sale un código si ocurre lo sigujente; O, hay un dato correcto al;fínal de BUFF. 1, flecha arriba. 2, flecha abajo. 3, -flecha derecha»;4, flecha izquierda, 5, TAB. 6, SHTFT TAB. 7, ESC. 8, PGUP. 9 PGDN.;Cualquier otro dato es procesado para ver sí es valido incluirlo en el;bu.ffer. Se produce un BEEP si un dato es invalido O ai llegar a los;1 imites. Si al ingreso a la subniífna GDT^ESET es l,bnfrer y variables;son iniciaHzad.as. Si es O, no lo son, y se puede segiiir recibiendo;el mismo dato. Los números binarios no son convertidos en hex,getdata macro x^buff^'po

push bxpush expush dxmov bXjOffsetbuíTmov cl,x

Page 344: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AP&VIJICE n-Mi'RO-ASM H - 335

mov ch,ymov

pop d.xpop expop bxendm

OETDATA2 ***************

;Lee datos del teclado. 'En BUFF se tiene;;# de bytes pedjdos, # d.e datos leídos, datos, # convertido en hex;(4 bytes). Hace eco en pantalla en (X,Y). pe acuerdo al TÍPQ;recibe d.atos en bin ('b')3 hex ('h'), dec ('d'), La. longitud de;BUFF debe ser adecuada; bin, cualquiera; hex, 2 0 4 bytes; dec> 3;o 5 bytes. Si se presiona T^ET,, o BS se borra el ultimo dato ingresado.;ENTER, es esperado para confirmar \ dato y convertirlo en hex. En;GCCOD sale un código si ocurre lo siguiente; O, hay un dato correcto a!;final de BUFF. 1, flecha arriba. 2, flecha abajo, 3, flecha derecha,;4, flecha izquierda. 5, TAB. 6, SHTFT TAB. 7, ESC. %, PGUP. 9 PGDN.;Cualquier otro dato es procesado para ver si es valido incluirlo en el;bu.ffer. Se produce un BEEP si un dato es invalido o al llegar a losDimites. Si al ingreso a la subrutina GD"RBSET es I jbuffer y variables;son inicializad.as. Si es O, no lo son, y se puede seguir recibiendo;el mismo dato. Los números binarios no son convertidos en hex.getd.ata2 macro x^buf^tipo

push bxpush expush dxmov bx^ffset bufPmov cl,xmov ch,ymov disipojmp rgdj ;sucede algo extranio s¡ se lo hace con cali

virus; pop dx. ;en el retomo no regresa acá (se cuelga)pop expop bxen din

.#*#*** GFTf INF ***************

;Lee del teclado un buffer BUFF (ASCII)» que tiene este formato; Numero;de bytes pedidos, nurnero de bytes realmente ingresados, texto. Pí)ra;edic¡on se acepta Backspace o Qelete. HNTER para terminar el texto.;Bn GCCOD sale un código; 1, se dígito ENTER. (buffer valido). 2, TAB.;3, SHIFT TAB. 4, ESC y 5, especial, l^ste macro usa GBTCHAR para;recibir datos. Bn X, Y recibe !a posición en que debe hacer eco.getline macro x

push sípush ex

Page 345: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APENMICF, H-MPRO.ASM ir

mov cl,xmov ch,ymov s^ofTset buffcal] rglpop expop siendm

.****** T ' r s " ***************

;Borra la linea KUMy pone en ella el atribtito A.TRÍBlimpln macro Tium,atrit>

push ax;iTiOV al,num

pop axendrn

. :{; 3fh :j: 3^ Jf: | Ayf PPf\•' I ' JjCJíí>i'VíTcTc;T:;t::T:3Tí:TíífC3IC3f:3Í:í> '

¡Borra la pantallaImppnl rnacro

push expiísh dirvticrv **"v¡y\JÍ>*I a<^

ITVOV PXT OAní^¿lis/ * ^í*^^** v v

mov dj,0mov ax,0720breppop axpop dipop exencím

y ***************.****** pD'fWT ***************

;Bscribe eí texto apuntado por E>TR en !a pantalla a partir de;(X»Y) con atributo ATRIB, E3 texto debe termiirar eorv un O,print macro x^dir^atrib

posdirpush sipush axmov si,offset dirmov fih^aíribcali rprtpop axpop sí

Page 346: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APEN1J1CE 11-MI'llO.ASM

.****** O AT "WA.T3 ***************^ kJ/r*-JW • / »•*-•»>

sa!va23 macro

ndm

.#***** 'DRQ.TOT. ***************

ndm

.****** jJS^^RO ***************

;íntereambia las pantallas de usuario y $el programausrpro macro

cal] ufsrpinmuesíra 1 jVisibíejr

endm

;lnicio de macros para macros de Usuario.****** P P D R 1 2 ***************

¡Cierra e! archivo cuyo bandle es MCRHAND.cernncr macro

cal! rcmerendm

.******: CR.EAMCR ***************

;Crea el archivo cuyo nombre esta dado por el ASCIIZ;que empieza en OIRNOM. Pone el handle en MCRHAND.creamcr macro dirnom

push dxmov dx^ffset dirnomcali remepop dx.encim

.****** "RAf ***************

;Graba en el archivo cuyo handle es MCRHVVND los 1 Q8ÍÍ bytes que;empíezan en A.RF.AMAC y contienen el índice y datos del macro manejados;por FLUJO; y ios 204§ bytes que empiezan en MQRDAT y que componen;el área de datos de los macros que el usuario ha dado en respuesta;a rutinas del programa usuario de FLUJO.;Codígos de error en AX; 05 todo bien; 1, no hay archivo abierto,grabmcr macro

cali rgmend.m

Page 347: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al'ÜNIMCE 1-1 -MPRO.ASM {J _ 335

.****** GFTKFY ***************¡Es la fu.ncion de teclado elemental intervenida para poder;leer un dato de! teclado o del bufíer de macross y poder¡grabar un dato en ese buffersi es necesario. Su. salida;es GBTWQRD que tiene el código ASOT extendido de una tecla,;S¡ se estaba grabando macro y se termino el espacio para el;macro> se pone el byte de iníerface en FF y MCRERR. en 1.getkey macro

cali rgkendm

¡Recibe a partir de DTRNQM un ASCíIZ con el nombre del archivo¡de macros. Traía de abrir el archivo. Si existe, lo lee en¡AREAMAC (1088 bytes) y en MCR'DAT (siguientes 2048 byíes).¡Guarda el handle en MCRHA.ND.Codigos de error extendidos en AX.;Si detecla que un archivo no es demacres»sale AX=FF,¡Pone valor ARBAMAC-H088 en DÍRKMAC. En [OtRNMAC] esta el # del;macro actual y el siguiente byte es el de interface, que debe¡hacerse FF cuando deba terminarse la grabación de un macro.ínimcr macro dirnom

pu.sh dxmov dx^ffset dirnomcali rimpop dxendm

.****** 'L'jvfpjyiCR. ***************

¡limpia las áreas de macrosImpmcr macro

cali rlmc.rendm

***************rtodo macro

pop eaxpop ebxpop ecxpop edxpop esipop edipop esppop ebppop dspop esendm

Page 348: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AlMiNUICK 11 -MPRO.A.SM H - 339

***************

stodo macropush espush dspush ebppush esppush e dipush esipush edxpush ecxpush ebxpush eaxendm

***************

sbrpro macro

ÁREA PARA DATOS MACRO SBRPRO

.dala

gdíabj d.b '0123456789A13CDBFatedefGgnPpXxSs;-K' ;para memoria relativabadinst db 'instrucción incorrecta, iníenle otra vez',0dhexseg d.d, O ¡almaceno segmento para memoria relativadhexoffdd O ¿almaceno offset para memoria relativasignl db O ;ley signossign2 db O ;ley signosprevsi dvv O ¡puntero buffer dhexlvlrreaderr db O ;error al leer catos de dhexMrposini d.\ O ¿posición inicial de datos en clhexMrposfín dw O ;posicion final de dhexMr para fin de laxoposmedjum d.b O ;0 o 1 .alerta que se cambio d.e seg. a offsetsignopos db O ;signo para sumar a seg, v offsetsignobef db O ;s¡gno para sumar a seg. u. offset

;(+ = Q) (-=1.)xxxx dd. O ¡registro para almacenar datos o registros

gccod db O ;codigo de tecla especial pulsadagdresetdb 1 ;GGTQATA inicia! iza variables?gcascií db O ;resviltado de GBTCHARgdtab d.b '01234567S9ABCQEI7abcdefpant dw 2000 dup(0720h) ;b;iffers para guardar pantallas (USRPR.Q)pantr dw 2QQO dup(Q72Qn)

Page 349: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-MPRO-ASM jj _ 340

pant? db 1 ;PANT tiene pantalla sirglx. db O ;x,y para geílinergly db Ofínbufmcr db 'Fin del buffer \ fín del macro. Presiona ESC,',0buf23 d\ SO d\]p(Q) ;para guardar la línea 23soluc db 1500d,up(0)

ÁREA, PARA COPÍQO RACRO SBRPB.O

.code

rfínrn; stodosa!va23 ;salvo linea 23íirapln 23/eyersprint 1 Sjfínbufrner/eyers

rfírim 1 ; getkey ;recibo ESC para salirmoy ax,get\vordcmp al»lbhjne rfínmlrest23 ;restauro linea 23rtodoretn

rgch; ppu.sh dx

rgchl; mov dljgetkeycmpjne rgch 11fÍT!i~nacrojmp rgcbl

;Ieo datg de teclado o buffer;errpr en macro en (jETKEY?

;si.rgchl 1 ; mov aXjgeíword

cmp a',0 ;es tecla especial?je rgch3 ;si.

rgch2; cmp al,0dh ;ENTER?rgchfdi

einccmp a!59je rgchfínc di

dial,lbh

je rgchf

inc

;TAB?

;ESC?

Page 350: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H - 3 4 1

;F10?;sí.

;SKIFT TA.B?

mov d1,0 ;eswi ASCMvamov dh,a!jmp rgchf

rgch3: mov dlt5mov dh;ahcmp ah,6§je rgch31cmp ah,15jne rgchfmov dl,3jmp rgchf

rgchSlrmov dl,0getkey

ni crerTj irgch32

fínmacrojmp rgch31

rgch32: mov ax,getwordmov dh,a1cmp al.lbh ;!5SC?je rgchfcmp aUOdh ;ENTER?je rgchfcmp als9 ;TAB?'je rgchfjmp rgch!

rgchf: mov gccod^dlmov gcascíi,dhpop dx,pop axretn

rgdJ; stodocmp gdresetj ;im'cializo variables?jne rgd2J ;no.mov dh,[bx] ;# de datos pedidos,mov n!>0movmov si»2mov a I,'O'

rgdlj; TOOVinc sidec dhjn^ rgd.l,r

mov dhex$eg>Qmov d.hexoffiO

;inicia1ixo buffer

Page 351: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

I1-MPHO.AS-MH - 342

püshamovmovmovmovmovmov

rgd20j: movincdecjnzpopa

bx,offset d.hex3dh>[bx]al.O[bx+l]>alsi,2als'Q'[si+bx],alsidhrgd20j

rgd2J; getkeymov gccod,0

rgd21,í; movcmpjne

rgd.3,1; movcmp

pushmovsubpushxormovmovpoppopjmp

rgdSgj; inccmpjnepushmovaddpushxormovmovpoppop

ax,get\vorda.1,0 ;tecla especial?rgd4Jgccod, 1ah>72 ;flccha arriba?rgd.3Sjsisí,offset auíoseg

eaxeax, eaxax,[si]xxxxseg,eax

eaxsí

;f]echa abajo?gccod.

rgd37jsi

[si],leaxeax,eaxax,[si]xxxxseg,eaxeax

rgdfj

rgd37j; inc gccod

Page 352: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AJ'líNDICE II -MPRO-ASM rl - ,.,H - J3 j

cmp ah>77 ;->?je rgd2,í ;no hacer nadainc gccgdcmp ah,75 ;<-?je rgd2J ;no hacer nadaadd gQcod,2cmp í!h,1£ ;SHTFTTAB?je rgdfTadd gccod»2cmp ah,73 ;PGUP?jne rgd35jpush si

mov sijof&et autooffsub [s'JjoShpush eaxxor eax,eaxmov ax,[si]mov xxxxof^eaxpop eaxpop siJmP

rgd35j: inc gccodcmp ah,$1jne rgd36jpush símov si,offsel auíooffadd [si],68hpush eaxxor eax,eaxmov ax,[si]mov xxxxofT,eaxpop eaxpop sijmp

rgd.36j: cmp ah,§3jne rgd2Jjmp rgddJ

rgd4,í; cmp al>8 ;BS?jne rgd.41 Ujmp rgddJ

rgd411 J; cmp al}0dh ;ENTER,?jne rgd412,íjmp rgdeJ

rgd412J; cmp als9 ;TAB?jne rgd.413J

Page 353: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al'KNllICE H-AIPROjVSM H - 344

mov gccod>5jmp rgdffi

rgd4I3J; cmp a!,lbh ;BSC?jne rgd44,.ímov gccodjjmp rgd.fT

rgd44J; ;heximov dh(0 ;veo si dato es correcto.mov sJ,ofTset gdtabJ

rgd.441 J: cmp a!,[si] ;consta en la tabla?je rgd46Jinc siEne dhcmp dh,35 ;acabo la tabla?jne rgd44Ujmp rgd,b,T ;no fue valido.

rgd46J: mov ax,get\vordmov dh,a5cali rgd.OJ ;pH"=^, BX~>inicio buffercmp a!,1 ;exceso de datos?jne rgdSJ

rgdbJ; push dx ;BESPmov ah,2mov d!,7i ni 21 hpop dxjmp rgd2J

rgd5,í; cali rgd.Oljmp rgd2J

rgddj; cmp byteptr[bx+l]fO ;DELHTE. Buffer vacio?je rgdb,Tcal! rgd02cali rgdOl ;Presento dato en ventana (en asen, no transformación)jmp rgd2J ;A. esperar por otra tecla

rgde.í; push ex ;rutina que analiza los términos ingresadospush dx ;eri dhexMR (para acceso a memoria relativa)mov ch30movmov cl,[bx]sub cl^almov si,bxpush bx.add. hx,29movpop bxadd si\

Page 354: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKNIJICE H-MI-IÍO.ASM H-345

ST

lodsbcmpjecmpjne

rgd70; jmprgd71: cmp

jecmpjíie

rgd72; jmprgd73; cmp

jecmpjne

rgd74; jmprgd75; cmp

al>'Xl

rgd70 jaXjbXjCXjdxal,'x'rgd71regpgx.al,1?'rgd72 ;bp,ip»spí»Vp'rgd73regpgpal»'í'rgd74 ;si,d¡al, 'i'rgd75regpgial/S'

cmp a!,'s'

mov S!,prevsilodsbdec sijmp number?

rgd76; jmp regsegnumber?; cmp als'-1 ;entonces se traía de un dato (hex)

cali rgd.0003 ;sumo registros o datos a dhexsegyerase; pusha ;dependiendo de posmeduim;borro buffer y salto

mov bx,offset d.hex3 ;a iniciomov dh,[bx]mov al}0mov H

;borro buffer d.hex3mov

rgdlQ3; movme sidec dh

JTiz rgd!03popajmp inicio

rgd.73; cmp al,1;'je dosp ;se trata entonces de";"

d.hex03; ;aqui almaceno ipaxíiiio 4 #5 en hex hasta hallarmov b^offset dhe,x3 ;un "+' o "-'*síno BBEP y buelve a co"d. in¡c.

rgd4603; mov dhjal

Page 355: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-MPRO.ASM •"• "

add si>cxmovmovcmp ctjl)jne iniciolmov readerr,!

fínO; pop dxpop exrtodojmp virus

iniciol: mov prevsi\sidec prevsi

imcio; mov si,prevsi ;injcío de laxoinc sicmp súposfmjne nextO

mov bjtjQffset dhex3cmp byte ptr [bx-H],0

cali rgdQOQ3 ;entonces bviffer contiene datospusha ;borro bxifjer y síílto a inigiomov bx^ffset dbex3 ;a: ingresar nuevos d.atosmovmovmov

mov al>0rgdl 05; mov [si+bx]tal iborro buffer dhexS

inc sidec dnjnz rgd105popa

rgdlOó: mov posuu\mov reacieTTjOm QV posm edñim^Omov signopos.Omov s¡gnobe£,Qjmp fínO

nextO; lodsbdec simov prevsissicmp al,';'jbe number? ;se permite máximo 4 dígitos en hex

Page 356: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H - 3-47

cali rgdQOS ¡almacena y rota n-! veces donde n^ datosemp n!»l ;pedídos (n=4)jne rgd503

finí; push d>- ;exceso de datosmov ah,2mov d¡>7inl - 21hpop dxprint O^^badinst.normalcali errorOmov dhexseg,Qmov dhexoffjOmov signobefjQmov sfgnopos,0jmp fínO ;fín de lazo

rgd503:jmp inicio ; a leer nuevo dato de d.hexMr

RGP003; push bx ;nitina que almacena y rota n-1 veces datopush ex ;d,e dhe^Mr si dato en hexmov fil^x]cmp al,[bx-H]mov a!,lje rgdOfí)3inc byíe ptr [bxH-1] ;incremento contadormov sijbxmov bx»!

rgdP103:mov al,[bx-f-si-í-2] ;roto n-1 vecesmov [bx+si+lkalinc b!cmp bl,[si]jb rgd.0103mov [bx+si+]]5dh ;ÍJicHiyo nuevo datomov a3,0

rgdOfDS: pop expop bxretn

DOSP; cmp súposiní ;síai inicio de buíTer";" ÍTicorrectoje fin]mov bx,offset dhex3cmp byte ptr [bx+1 ],0je dospl ¡entonces fue registrocal! rgd,0003 jentonces buffer contiene datospusha ;borro biiPíery salto a iniciomov bx,orTset d.hex3mov dli,[bx]mov al,0

Page 357: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-MPRO.ASM ,, _ , 0

mov [bx.+l],almov SÍ ,2mov als'0'

rgdl 04; mov [si+bx],al ¡borro buffer dhex3inc sidec dhjnz rgdl04popa

dospl; mov posmedíum,! ;passo a analizar el offset de mem. re!.mov dhexofZ,0mov signopos,Qmov signobef,Qjmp inicio ¡en buffer dhexMr

í; pusha ;s;imo registros o datos a dhexseg y dhexoffsignlow ;dependiendo de posmedium.Borro bu.ffer y salto a inicio

push bxmov bx,offset dhex3cmp byte ptr [bx+l],0pop bxjrie r¡ext9poparetn ¡entonces no hacer conversión

next.9; mov bx>offset dhex3 ;a iniciomov si,bxmov d1,[bx]mov dh,0add si>2add si^dx ;ST apunta a posición de datos a convertirse

rgd(5l03: mov aU[bx+2] ; en hexcali rg403Q3 ¡convierto MSBmov c1s4shl d.h,clmov [si-M]sdhmov al}[bx+3]cali rgd0303acidadd bx,2

rgd.6203; movcali rgd0303mov el ,4shlmovmovcali rgd0303'add [si],dh

Page 358: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

0\

o o

ft rf

f-lfc u

a?,

yT

J 0>

BS a a> te

o E4-

T £ ^

'j_

, ¿3

C/

J(C

O

CC

1C

fc.

oX P

5

C

US

77,

CO

§ -

a: §

P

- £

g. £

P

P

§., I

«»í-ii.

i—

W

—'•>

t>

• —

i

* x

£ g

a>-

^ f

c t^

S g t

xT

xf

w 3

->CO

CO

-1

-'-

^3

¿3w

o

T

Í ée

g

•o'

2Q

.ao

oS

--

5¿

££

&a

e'

4>

O

C5

CSU

QJ

oO

O

°-

C "°

C C

..

E

es

E c

es wv

C5

P tft

0)

caU

D..

C

O a> C

T-x;

wO

C5

SI

'í^

CL

J

J> w a>

tfl

• " x

v

I •,

s, s

a) x

tíi

bB

£.

H ^ u

-o

x,

íS

"•..

«

" x

(-••

X

X.

X

a>

-&

xce

es

c*

rC

: =í

. S

<u

cu

a> T

J" cti

. (u

«s

&C

L.

O-,

a. c

a, o

.,rn

o

o.£

SO

H

_o &

Page 359: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APEMHCE ir-MPRO-ASM H - 350

cmp al,1-1

je signospush axmov í1

mov signobef5alpop axretn

signos:pushmovmovpopmovincmovcmp

jecmpjemovcmpjemov

nosignos: retnesmas; mov

retn

ax ;ley de signosal^signopossignobef,al

axsignl,alsiai ¿si]aV-1

leysignosaV+'leysignosalssignl31,'+'esmassignopos,! ;signo "-"

signopQSjO ¡SIGNO

leysignos; niov prevsi\simovandcmp

jemovpushmovmov

P°PJ™P

esmenos; movpushmovmovpop

sign^ja!aUsignlal,29hesmenossignopos,0axal,signQpossignl^alax-fínbufP?

signopos,!axaí5signopossignl.a]ax

-Rnbuff?; push. bxadd bx,cmp bx,,

Page 360: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APENDTCK IT-MPRQ.ASM H-351

popjnereta

lazosign; incmov

bxlaz;osign

s

cmp 3V+1

je leysignoscmp al.,1-'

jmp nosignosRGDQ303; rnov d.i,offset gd.tab

mov dh>0rgdOS 103; cmp al,[di]

je rgd03203inc cliinc dhcmp dh,22jne rgd.03103

rgd.03203; cmp db,]^jb rgd.Q3fí)3sub dh,6

rgd03fü3; rernREGPQX; inc prevsi

mov bx,offset dhex3byteptr[bx-M],0fínlaxa!5signopossignobef,al.

ax

;busco AL en gd,tab y traigo vibicacion

cmpjne

;longitiid de registro;se trata de ax,bx5cx,dx-;error?

movmovpop

decdeclodsbcrnpjecmpjne

rgdSO: pushandpushmovmovpop

P°Pjmp

regbx?; cmp

sisi

rgd.80aVa1

regbx?regax

eax.eax.,regaxxxxx,eaxeaxregaxrgdOjb

Page 361: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-MPUO.ASMH-352

jecmpjne

rgd$l; pushandpushmovmovpoppopjmp

regcx?; cmpjecmpjne

rgdS2; pushand.pushmovmovpop

P°Pjmp

regdx?: pushandpushmovmovpoppop

RJ3GPGP; incmovcmpjnepUShmovmovpopd.ecdeclodsbcmpjecmpjne

rgdíH

regcx?regbxregbx^Offffheaxeax^regbxxxxx_eax

eaxregbxrgdOjb

rgd82

regdx?regcx

eaxeax,regcxxxxx,eaxeaxregcxrgcíOjbregdx

eaxeaxyegdxxxxx3eaxeaxregdxrgdOjb

prevsibx,offset dhex3byteptr [bx-H],finíaxalssignopossignobefjalaxsisi

rgd.83

regíp?

¡longitud de registro;registros bp.ip^sp¡error?

Page 362: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

qsndpulí

qsnd3UÍ"

dujosf

'[tí dujoqspoj

1S

15

XG dodAOaiAOUJqsnd

¿JOJU3Í i

is'ip s04SiH3i f C^sqp J3Sjj.üeyq AOLU

duifdod

xes dodXBO'XXXX AOlU

AOlU

qsnd

qsndduifdod

xB3 dodAoaiAOLU

qsndpulí

qsnd

dato3f

:¿diSai

esc-H

dtufdoddod

Xe3eXXXX AOLLt

AOLU

qsndpUB

qsnd

KSVOÍUIK-ll ';

Page 363: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al'ENDICE H-MPUO-VSMrl - 3s4

mov eax/egdimov xxxx.eaxpop eaxpop regdíjmp rgdOjb

regsi?; push regsiand regsi.Offffnpush eaxmov eaXjregsímov xxxx.eaxpop eaxpop regsijmp rgdOjb

REGSEG: inc prevsi ¡longitud de registromov bx^offset dhex3 ¿registros d.sses/s»gs»ssscscmp byle pír [bx-H],Q ¡error?jne fmIpush axmov aljSignoposmov signobefjalpop axdec sidec silodsbcmp al>'D'je rgd.S6cmp aVd1

jne reges?rgd§6; push eax

xor eax,eaxmov ax/egdsmov xxxx?eaxpop eaxjmp rgdOjb

reges?; cmp alj'R'je rgd«S7cmp al.'e'jne regfs?

rgd.87; push eaxxor eax,eaxmov ax,regesmov xxxx,eaxpop eaxjmp rgdOjb

regfs?; cmp al,'F'je rgd88

Page 364: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APICNIÍICF, IÍ-MPIÍO.ASM H-355

cmpjne

rgdSS; pushxormovmovpopjmp

reggs?; cmp

cmpjne

rgdS9; pushxormovrnovP°PJmP

regss?; cmpjecmpjne

rgdSa; pushxormovmov

P°Pjmp

reges?; pushxormovmovpop

a!,'freggs?

eax,eaxax,regfsxxxx.eaxeaxrgdOjbai/G1

rgd89aí^'g1

regss?eaxeax,eaxax,reggsxxxx,eaxeaxrgd.Ojb

al/s1

reges?eaxeax,eaxax,regssxxxx,eaxeaxrgdOjbeaxeax,eaxax,regcsxxxx,eaxeax

R.GDQJB; cmp posmedjum.O

cmpjepushmovsubrnovmovpopjmp

esleiljsignobefjQesmas2jeaxeax,dhexoffea.x,xxxxdhexorT,eaxau.tooff.eaxeaxinicio

esmas2j:push eaxmov e<ix.d.hexoff

Page 365: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE IT-MFRO.AS.\ II - 356

addmovmov

P°PJTTlp

esleftj: cmpjepushmovsubmovinpvpopjmp

estnas3j;pushmovaddmovmov

P°Pjmp

rgd.fj; rtodojmp

dhexoTfseaxantooff^axeaxiniciosignobef,0esmas3

eax,dhexsegeax,xxxxdhexseg,eíix.

eaxinicioeax.

eax,d,hexseg;left

dhexseg,eaxciLitoseg,eaxeaxinicio

virus

;iniciajizo variables?o.

;# de datos pedidos.

;inicializo buffet

rgd; stodocmp gdresetjjne rgd2mov dh,[bx]mov a 1,0mov [bx-H],almov siy2mov al.'O'

rgdl; mov¡nc s¡dec dhjn.2; rgdl

rgd2; getkeymovcmp mcterr5ljne rgd21fínmacrojmp rgd2

rgd21: mov ax,getwordcmp al,0 ;leclív especial?jne rgd4

rgd3; mov gccod,!cmp ah,72 ^flecha arriba?

;error en m

Page 366: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H -I I - 357

jeinccmp

jeínccmpjeinccmpjeaddcmpjeaddcmpjeinccmpjecmpjnejmp

rgd3£ jmprgd.4; cmp

jnejmp

rgd41 1 : cmpjnejmp

rgd412; cmpjnemovjmp

rgd413; cmpjnemovjmp

rgd42; cmpjne

rgd43: cmpjecmp

jejmp

rgd431;jmprgd,44; cmp

ine

rgd3fgccod.ah^SQ ;flecna abajo?rgdSfgccoda.h,77 ;->?rgdSfgccodíir],75 ;<-?rgdSfgccod»2ah.15 ;SHTFTTAB?rgdSfgccod}2ahJ3 ;PGUP?rgdSfgccodah.81 ;PGDN?rgdSfah,83 ;OBUrgd2

rgd.d.rgdfal,3 ;BS?

rgd411rgdda!,0dh ;BNTER.7

rgd412rgde91,9 ;TAB?

rgd413gccod^rgdfal,lbh ;ESC?

rgd42gccodjrgdfdl,'b' ;binario?rgd44ai;0' ¡es'O'o'l1?rgd431al.'l1

rgd431rgd.b ;dato no valido, beep,rgd46di;iV ;hex?

L'J -

Page 367: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

jv,

w

o.

3 s

3

Cu

.C

CT

O

V/-J ~

*ftl •as S-

ívJ

- •o o o •o o •o •o •o

o I 3

S

3o-

oa

3 1

en CL

Ui

to

O -

o

ow —

' X •

•o •o -o •o •o -o •o •o •o

TI

-O

o

!5'

ÍD cS CL 4.

C/i to

tro o 7i— M •-t-

Ui

K)

o

" '

' — >•

3 3

3X

J §

-7

3

- »

c3

u

— i

L*-l

i ¡ "

CL

|1" w

- n

cr

o

I i

2.

<.

, -J

-fD

'3

,C

L0

0-o

-i

-i -i

ce

CP e

ra-C

L

;CL 0.

N

rv

N+i.

4.

4.

Vi

Vi

4^-

(__:

*'

tO

s'Ii'I

-«'i|

Ii'-|

^

-o

<

< '

-o ^

Ít§

"H-Ía

|-§

=tt

§s

|°|&

ro

^ v— f

c

&Q n.

^-f-

w .

v .

O

3 w .

., .

os

o

ü"

.CL "

•_

3o

o

ni

M

o

«

3

0

0- w

•cr

,w

r- o

pi

t

ff

1 8-

«as

<E

,—

^b

<

L ni

u

M<— *

- "

j -•*

"t¿

— -<

ii

—•c

r ss

íí *.;

CL

^"

-i-

O

-T O

. "

«

CD -

.E:

-^. o

as

«->

— i

.

.i-L .rn

"^

S

Ti

•^f-

4-í

-J

0

'.-ri

O w n o -i .0 o

•S'S

3-

o

d

o•T

O

-°-

CL

^

a-

rr4

Í-L

u4i-

104i.

10

<f

•0= n as cr O as 1 £3 -O

00

lí-( CL

-fc-

-£-

3'

<D*

0

0

3 T3

írt

-i--W

-a

CL „

—•

7T

14^

Mto

i-rj o o 3 53-

SS ^h <^ 3 •£T •(-+-

SJ cr 93 -o

3 o < tn O 5 •íí

to CL

as cr

3 o -.-• CL ^~

v

O

^* • re o « 'CL

as «-t-

O íí M .n o 3 .fp o <-f- p

í i•— i n 3 i r- a O !T.

'S

o

Page 368: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKN11ICE 11-ALPRO.ASMI I - 359

rgd45b: incmovmovsubmuífiddjncjmp

rgd45c: incmovmovsubmuíaddjncjmp

rgd45d: incmovmovsubmuíaddjncjmp

rgd45e; Incmovmovsubmuíaddjncjmp

rgd.45j: ¡ncmovmovsubmuíaddjnc

si

rgd45g; incmovmovsubmuíaddjnc

eajUQQQQQQQcl,[si]

cl,30hecx

rgd45osíeas, 1000000cl,[si]

cl,30h

rgd45drgd45osíea&lQOQQOcl,M

ci,30hecx

rgd45ergd45osi

^ 10000

cl,30hecx.

rgd.45jrgd45o

si

cl.SOhecxedí>eaxrgd.45grgd45osieax.100

ecxedi,eaxrgd45h

Page 369: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

¡s out :gc;-t7pS-idiufsu f

xu'ip ppiíX'3 [tlUI

qO£'[3 qns[¡S]*|0 AOU-1

AOÜTJS OU1

AOUI r

O'.vp cfuioyo |íuu

O'lp AOLU

[lS]*[0 AOLU

0000 1 '

-

xq'is AOUIxp qstidyo qsnd

diufdod

xos dodxps dod

lp3*[lS] AOUI

tS OUt

ofppe

qsndqp*p AOLU

x-ps dod,duifoüfppeI'niuqtis

AOUIAOUI

is o u i :duir

Page 370: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APENIHCIi H-Ml'RO-ASM H - 361

mov c ] > s ]sub cl,3Qhmuí exadd dj,íixjnc rgd4551jmp rgd45o ;overflow

rgd4551: cmp byte ptr[bx],3jne rgd.456cmp ñhyQje rgd.456jmp rgd45o ;overflow

rgd456; inc simov ax»10mov cl,[si]snb cl,30hmuí exsdd di,axjnc rgd.4561jmp rgd45o ;overf!ow

rgd456l ; cmp byte ptr[bx],3jne rgd457cmp ah,0e

jmprgd457; pop

movniigh

addjncjmp

rgd457rgd45o

dj,cxrgd4571rgd45o

;o verf! ow

;ove.rflowrgd4571 ; cmp byte pír[bx]s3

jne rgd.45fcmp ahsO

rgd45fergd45o: pop

poppop

jmprgd45f: Jnc

movpoppoppop

rgd46; movmovcalicmp

;overflowecxedxrgdbsi[si],dí

dxexdxax,get\vorddh>alrgclO BX~>¡n¡cio buffer

;exceso de datos?

Page 371: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ATENDIÓ; II-MPRO.ASM H - 362

rgdb;

rgd.5:

rgd.d;

rgde;

rgd.6:

rgdól;

rgd.62;

rgdf;

jnepushmovmov¡nipopJ™Pcalijmpcmpjecalicalijmpcmpjejmpmovmovmovaddaddcmp

je

cmpjemovcalimovshlmovmovcaliaddaddmovcalimovshlmovmovcaliadd

rtodoretn

rgdSdx ;BSEPah>2dl,721hdxrgd2rgdOlrgd2byte ptr[bx+l],Q ;QEU5TE. BufFer vacio?rgdbrgd02rgdOlrgd2dl.'h1 ;hex?rgd.6 ;a los binarios no los transformo yrgdf ;los dec. llegan ya transformados.si,bx ;convierto en hex.d1,[bx]dhjOsi\si}dxdl,2rgd62

byte ptr [bx]>SrgdE61als[bxH-2] ¡convierto MSBrgd.03

cl,4dh.cl[si-M],dhal,[bx-t-3]rgd03[si-M],dh ;MSB transformadobx52aljfbx+2] ;convied:o LSBrgdOScl,4dh.cl[si]5dhal,[bx-í-3]rgdOS[si],dh

Page 372: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APIÍNDIC1Í 11-MPIlO-ASMH - 363

rgdE61:movcalimovshlmovmovcajladdmovcalimovshlmovmovcaliaddadd

movcalimovshlmovmovcaliadcíadd

movcalimovshlmovmovcaliaddrtodoretn

al,[b.x+2]rgd03cl,4dM[si+3],dhal,[bx+3]rgd.03

[si+3],dhal,[bx+4]rgd03Clj4rjh,cl

[Si+2],dhal,[bx+5]rgd03[si+2]sdhbx,4

alt[bxH-2]rgd03c]44dh.cl[si-M],dhalj[bx+3]rgd03[s¡+I],dhbx,2

aI,[bx+2]rgd03cl,4dh,cl[sildhalj[bx-i-3]rgd03[si]sdh

¡convierto MS3

rgdOj; push bxpush ex

mov als[bx]cmp al,[bx+1]mov aljje rgd,0fl

;MSB transformado¡convierto LSB

;LSB transformado

¡convierto MSB

¡convierto LSB

para que reg. EIP solo acepte¡pone DH en el buffer apunl, por BX

¡ya no hay espacio?

inc byte p1r[bx+l] ¡incremento contador

Page 373: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE li-iMPHO-ASM jj _ 3^4

mov si,bxmov b,x}l

rgdOU; rnov a1,[bx+si-K2] ;rota a la izquierda n-1 vecesmov [bx+si+l]^l ;donde n=# de datos pedjdo$,inc blcmp b1,[si]jb rgdOlj

rgdOnj; mov [bx+si+l],dh ¡incluyo nuevo dato.mov al,G

rgdQfJ; pop expop bxretn

rgdO; push bxpush ex ¡esto para que reg. EJTP solo aceptecmp cua]2,Q ¡16 bits (dl=# de reg.)jne rgdOlOmov al ,4 ¡esto ya no pues bx contiene el # decmp al,[bx+13 ¡datos a ser leídosmov a!5lje rgdQf

rgaOTO;mov al,[bx] ¡pone OH en eí buffer apunt porBXcmp a!5[bxri-1] ¡ya no hay espacio?mov al,lje rgdQfinc byteptr[bx-í-1] ¡incremento contadormov si4bxmov bx,lcmp byíe ptr[s!3..1je rgdOn

rgdO!; mov aI,[bx+si+2] ;rota a la izquierda n-1 vecesmov [bx+si-f~l],al ¡donde n=# de datos pedidos.inc blcmp bl^si]jb rgdOl

rgd.On; mov [bx+si-H^dh ¡incluyo nuevo d,ato,mov a^O

rgd.Of: pop expop bx,retn

rgdOl; push ex ¡presento buffer en pantallapush dxposdjr cl.3chmov di,pddirmov bp}d.imov cl,fbxl

Page 374: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APBXOICK H-.MPRÍXASMH-365

movmov

rgdOl !;stosbincloopmovmovsubmovaddaddmovaddaddmovcmpje

rgd,Q12;lodsbstosbíncloop

rgdQ13;popP°Pretn

rgd02; pushdecmovmovmovcmpje

rgd021; movmovdeccmpjne

rgd022; movpopretn

rgdQS; movmov

rgdQS 1; crnpjeincinccmpjne

cri>0al,'J ¡primero borro

dirgdOUal,[bx-H]d,[bx]

c!5ajsíjbxsi,2si,cxdi,bp

cx}cxdi, excUbx+1]cl,0rgd013

¡muestro el numero

dirgdOUdx

ex

bx ¡rota a la derechabyte ptr[bx"H] ;dismipuyo contadorsi,bxbls[sí] 1bh 0* ibI91rgd,022nls[bx-f-si][bx+si+l]3albx.bl,lrgd021byleptr[bx-í-si-M],'Ol

bx

di^rfset gdtab ¡Busco AL en GQTABdh,0 ;y traigo ubicación en.DH,al5[di]

rgd032didhd.h.22rgd031

Page 375: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AI'liNDICE H-MPRO-VSM H - 366

rgd032; cmpjbsub

dh,16rgd03fdh,6

rgd.03 f; retn

rg¡:

rgla;rg l l ;

pushpushpushmovmovcmpjnemovincmovmovincmovmovmovrepmov

movmov

cali

diexbxrglx,clrgly,chgdresetjrg!adi,sidicl,[si]ch,0exax,dsessaxal,0stosb

;rec¡bo un stnng desde teclado;S'! apunta al inicio del buffer

;iniciali>-0 el buffer?

;limpia el buffer

;CX=^ car.

essvídeosegbh,0cls[si-H]curs24

getchar

rglM:

movrnovstosbmovmovcmpjecmp

jecmpjejmpmovcmpjecmpjemovmovaddmov

a^atrprevdi\dirprev

;pongo cursor;recíbo un dato del teclado

¡quito cursor

cl,[si] ;num. máximo d.e caracteresbl,[si+l] ;num. actual de caracteresgccod,5rg!2gccod.,1rg¡3gccod,0rglllrg!3a^gcasciíal,8rgldbl,c1rglb[bx+sj>2],clsbl

cl,rglxch,rg]y

;cgr. especial?

;ENTER?

¡ascii normal?

¡TAB, SFTÍFT TAB y ESC;

¡Backspace?

;ñn del buffer?

al ;no, guardo dato;eco a pantalla

salir.

Page 376: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

id'xvJOSJno |9p UOlOÍSOd OJ4U3Í10U3!

¿opuejuoq jinStes opsadí

¿31313a-

xo dod¡p dod

qso.|SSJ9A9/[B AOLU

AOLU

AOLU

-jB AOUI

ip ouiaippd'l'p AOUI

X[Sj(L¡0 AOLU

x¡Sjcp ppeip qsnd

xo qsnd

ipaitp dod

xo dodxq dod

[[Sj dLLlf

qsojs, ,'[6 AOLU

aippd'ip AOLULjO'[0 JlpSOd

K[Sa*qo AOUL[O 03p

X[Sj*[o ppujq' jO AOLU

AOLU

qi^j af

O'iq CÍLÜSC[3i dLUf

diuf

L t(B AOLU

¿<[P AOUI

i iSa duifout

qso^sAoai

JIppd(lp AOLU

- H 1VSVOU.IIV- II 'j

Page 377: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-.-MPRO.ASMH - 368

rll: push expush diposdir 0,almov di,pddirmov al,1'UlQv cXj8Qrep stoswpop di

P°Pretn

;djr de inicio de linea;AL tiene el " y AH el atributo

¡borra linea

ex

rlmp; push dipush axpush exmov di,0

movmovreojpoppoppopretn

cx.2000ax}072Qhstoswexaxdi

;car: espacio, atributo; normal.;borra pantalla.

rprt; push diiriov di,pddír ¡dirección de inicio

rprtl; lodsbcmp al,0 ¡termino?je rprt2stosw ¡AL tiene ef ASCFÍ, AH el atributojmp rprtl

rprt2; pop diretn

' pushpush

P°Pmovmovmovmovrepmovmovmovpopreta

esdsesds^vídeoseg51,23*160di,offsetbuf23CM^O

movsw

ds,axes,videoseg

es

Page 378: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKÍímCE TI-MI-RO-ASM H - 369

rres23: mov si,offse1 buf23mov ¿¡,23*160mov cx>80rep movswretn

rusrp:pushpushpushmovcmpjnemovjmp

rusrp 1 ; movnisrp2: mov

movmovmovrepmovmovmovmovcmpjnemovjmp

rusrpS; movrusrp4; mov

rep

;Si PANT?=1) la pantalla a mostrarse esta en;PANT> sino en PANTR. Uno de estos buffers;es cambiado con la memoria de video.

;datos actuales en PANT ?

sdiexsi, Opant?,1

rusrnld.i, offset pantr ;si

rusrp2di.offset pant ;no, datos actuales enax,@data ;guardo la pantalla enes.ax ;el buíferque no esta en uso.ds.videoseg

movswdi,0 ;PANT o PANTR a pantallaax,@datadssaxessvideosegpant?,! ;datos actuales en PANT ?nisrpSsijOffsetpa.nt ;sirusrp4sisoífset pantr ;nos en PA"NTRcx>2000

movsw

rusrp6: xor pant?,lpop expop dipop sireln

;toggle bandera PANT?

endm

;Subnrnnas para macros de manejo de macros de UsuariosSBRMCR ***************

2048 dup(O) ¡datos manejados por programa usuario.data

mcrdat db

Page 379: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE 11-MPIlO.ASM íí - 370

controldirnmacmcrhandgelvvordmcrerr

dbd\dwdwdb

0,00000

;Para ver si archivo es de macros (FQ);díreccion # de macro actual;handle d.e archivo de macros;salída de GETKEY;para sacar código de error.

.coderemen stodo

mov bx,mcrhand ;obtengo el handleymov ah>3eh ;cierro el archivoint 21hrtodoretn

reme; stodomovmovintmovríodoretn

ah,3ch ;creo archivo de macros.

21hmcrhand.ax

rgm: stodocmpjnemovjmp

rgml; movmovmovmovmovmovmovintmovmovmovintmovmovmovintmov

rgmf; rtodomovmov

mcrhandjO ;habia archivo de macros abierto?rgml ;si, continuo.mcrerr,! ;no salgo con código de errorrgmfQontrolj'Pcontrol+1,'0'ah,42h ;fíjo puntero de R/Wcx,0 ;al inicio del archivo.d^Ob\%mcrhandal,021 hcx,1088 ;escribo primera parle del archivodx,ofTset areamacah54Qh21 hcx',2050 ¡escribo segunda partedXjQffset mcrdatah,40h21 h

íih,0

Page 380: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II-MPRO.ASM ri -j-iiJrl - ó í \n

rgk; stodomov mcrerrjQmov bXjdirnmac ;veo si puedo entrara macroscmp byleptrfbx+lkQffhje rgkncmp bgmac,0 ;grabando macros?jne rgk2 ;si,cmp bmaCjO ;no, corriendo o probando macros?jne rgkl ;si.

rgkn: cali rgkO ;no, rutina, normal de teclado.jmp rgkP

rgkl; mov sí,offeet mcrdat ;leo dato de buffermov hXjdirnmacmov dh,[bx]mov dJ,Q ;DX=# de macro * 256add sijdx ;SI apunta a macro actualmov d1,[bxmov bl,dlmov bh,0add bx,bxmov amov get\vord,ax ;paso dato como leído de teclado.mov bxjdirnmacinc byte ptr[bx-f-l]cmp byteptr[bx-H],30h ;fín?je rgkocmp bver,0 ;probando?je rgkf ;no, salgo.push get\vord ;si,espero ENTER para conñrmar.

rgkl 1; cali rgkOmov ax3get\vord ;es ENTER?cmp aljOdhjne rgk:11 ;no, espero un ENTER.pop getword ;si, salgo.jmp rgkf

rgk2; mov sijOffset mcrdat ;leo dato de tecladomov bx,dirnmacmov dh,[bx]mov di,0 ;DX=# de macro * 256add si,dx ;SF apunta a macro actualmov dl,[bx;+l]mov bl,dlmov bh,0add bx.bxcali rgkO ;guardo dato en

Page 381: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al'EMHCIv TT-MPRO.ASMB - 372

movmovmovínccmpjbmovmov

rgkf": rtodoretn

ax%get\vord

rgk3:

bx\dimmacbyteptr[bx+1]byte ptr[bx-H ],80h ;termino área de macros?rgkf ;no.byte ptrjl^x-H^Offh ;si, mando estos valores comomcrerr,! ;¡nd¡cacion de fín de macro

rgkO;stodocmp ventjOje repetirrgkOmov aljVentnuevacmp aljVentactualje repetirrgkOmov amp

repetirrgkO:movintcmpje

•fínmgkO

ah.Obh21hal>0verratonmgkO

I6h

notabVentnuevaVentnu e va >6fínmgkO

movintcmpjneinc

cmpjnemovjmp

notab:cmpjnedeccmpjnemovjmp

verratonmgkO:cali pantallacmp b.^Offhje repetirrgkO

; espera que se pulse una tecla.

fínmgkO

axsOfOOhfinmgkQVenfNuevaVentNueva.OffhfínmgkOVentNueva,5vShort fínmgkO

Page 382: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

; H -MPRO.ASM || _ 373

fínmgkO;mov get\vord,axrtodo

ret

rim; stod.O ¡intento abriré! archivomov bxsoffset areamacadd bx,1QS8 ;inicializo DIRNMACmov dirnmac,bxmov ahjSdhmov a],02hint 21hjnc riml ;íodobienmov ah,59h ;error, veo de que tipo es.mov bx,0int 21hmov mcren^al ;salgo con código de error extendidojmp rimf

riml; mov mcrhand,axmov bx^axmov ah,42h ;veo si es de macrosmov cx.,0mov dx33136mov al,0int 21hmov cx»2mov bx^crhandmov dx,offset controlmov ah,3fh ;REA-Qint 21hcrup control,'F'jne riml 1cmp coníro!-H ,'Q'je rim 12

rim U; mov ah,3eh ;no paso chequeomov bxsmcrhand ;cierro archivoint 21hmov mcrerr.,0ffhjmp rimf

rim 12; mov bx.mcrhand ;es de macrosmov ah342h ;L$BEKmov cx^Omov dx%0mov al,0int 21hmov dx»offset areamacmov c

Page 383: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APIÜS'DICE I-J -AM'RO-ASMH - 374

movintmovmovmovEntmov

rimf; rtod.omovmovretn

;KEAD2 i hdx^offsel mcrdatcx,2Q50 ;leo segunda parte del archivoah,3fh2 i hmcreríiO

ah30

rimen push dipush expush axmov di,offset areamacmov c.XjlO^Smov al,Qpush espush dspop esrep stosbmov di,offset mcrdatmov crep stosbpop espop axpop expop diretn

endm

Page 384: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APENIHCE H - pRovrrr.ASM -rr _

MACRO PROVNT.ASM

Rutinas para manejo de ventanas

;Macro Parámetros Función.

;hexasc hex en AL => ascíi en BX;idvnt diras^dirresjongres identifica archivo y área de ventanas;popall pop a todo¡posdir xsy calcula dirección en memoria de video;pushall push a todo;ynt riombre3ripo muestra o actualiza una ventana;sbrvnt subnrtinas de los otros macros

.###### HEXASC ***************;E1 byte en AL se convierte en dos bytes ASCII en BXhexasc macro

cali rhaendm

;Este macro recibe el nombre del archivo de ventanas en un ASCÜZ que¡inicia en DIRASC. Abre el archivo, trae todos los grupos principales;al área que empieza en DTRRES y guarda DTRRBS y LONGRBS en el índice.;En AX salen códigos de error: 00 todo bien3 01 error al abrir archivo,;02 si se encuentra que no es un archivo de ventanas, y;03 error por falta de espacio (LONGRES= 6 grupos para Índice -i- # de;gaipos principales + 1 grupo para una tabla de residencia actual 4- al;menos 4 grupos para secundarios, a menos que todas las ventanas seanprincipales). Nota; Un gnipo=256 bytes.idvnt macro dirasCjdirres^ongres

push dxpush dipush bxmov d^offeet dirascmov di,ofíset dirresmov bljongrescal] rivpop bxpop dipop dx

Page 385: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APFJÍH1CEH - PRO\7iT.ASM TT _

endm

.****** PQPAU ***************

popal! macíopop eaxpop ebxpop ecxpop edxpop esipop edipop ebppop esppop dspop esendm

POSDl'R ***************;Convierte la posición (X,Y) en una dirección en;PDDIR para acceso directo a la memoria de video.posdir macro x,y

push exmov cl,xmov ch,ycail rpdpop exendm

.***#*# pus^j/^'f 7 ***************

pushaJI macropush espush dspush esppush ebppush edipush esipush edxpush ecxpush ebxpush eaxendm

***************;BX apunta al nombre de la ventana. Si existe y es principal, sus;grupos en el área de residentes son los mismos que tenia en el;archivo. Sí es secundaria ve si es residente, caso en que sus grupos;estan en la entrada en el índice. Si no es residente, se la trae al;area de residentes y se la marca como tal, borrando la residencia

Page 386: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKNTHCK H - PUOVNT.ASAI

;de las ventanas sobre las que esta ventana se coloque. Muestra la;venlana y donde se encuentren vanables se las ¡een del área apuntada;por AX;SÍ. Existen dos TÍPQs de llenado; 'h', hexadecimal, c/byte;se muestra en dos variables de la ventana y 'a1, ASCÍI, c/byte se¡muestra como tal en pantalla.;En AX sale un código de error; O, todo bien; 1, nombre no existe.vnt macro tipo

mov tipvnt,típQcali rvntendm

II -377

SBRWTsbrvnt macrotabha db 'OY1Y2Y3Y4Y5Y6Y7Y8Y91

rha: push axpush expush dxmov bx,offset tabhamov di,aland al,0f0hmov ah,0mov el, 16dív elpush dsmov ex, esmov ds,cxxlatmov ch,almov al,dland al,Qíh ¡nibble menos significativoxlat ¡Traduzco a ASCHpop dsmov el,almov bx,cxpop dxpop expop axretn

;n¡bble mas significativo

;lo paso a la parte menos signif.

;hago DS=CS para que funcione el XLAT

¡traduzco a ASCIT

dirind d\riv: push

Osi

push exmov si\bxmov ah,3dhmov a],0int

¡dirección del indjce

¡abro archivo

Page 387: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H - 378

jncmovjmp

rivl: movmovmovmovintmovmovmovmovmovmovmovmov

rivll: addincdecjnzcmpjemov

rivl terror.

rivfbx,ax ¡handleah,3fh ;Ieo entradas O, 1 y 2,dx,di

21h[dB-13]»b,\ Aguardo handlebx,si[di+12]}bl ¿guardo LONGRES[di-HO^di ;giiardo DÍRKESdirínd^díb.x-,24 ¡chequeo paridad del archivo

¡paridad de ventanas no se cumple

rivl 2; movmovmov

rivl3: addincdecjnzcmpjemovjmp

rív2; movcmpjeadd

riv2!; addinccmpjbemovjmp

rív3: movadd

al,0aí,[di+bx]bxelrivl 1

rivl 2ax,2rivfbx,36cl,32

als[di+bx]bx

elrivl 3als[dí+bx]riv2ax,2 ¡paridad de grupos no se cumple

rivfals[di+9] ;# de grupos principalesa1,[di+l] ;= total de grupos?riv21al,4 ;-f-4 grupos mínimo de secundariasal,6 ;+6 de índiceal ;+l para tabla de residencia

HVJ

rivfdx,didx,72

;muy poco espacio

¡todo bien, leo resto del índice

Page 388: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKTíniCEH- 1'llOWr.ASM H - 379

movmovmovint

riv4: movaddmovmovmovintmovaddmovmovaddrnov

riv5: addmovmovmovmovmovmovdec

rivf":movpopPOPretn

pddir dwrpd: push

pushmovm u íaddmovaddmovpoppopretn

segvar dwoffVar dwtipvnt dbdirent dwmiTngrp dbcolumna db

CX.J536-72bx,[di-H3]ans3fh21hdx,didx,1536chs[di+9]clsOah,3fh21hch,[dJ+9]ch,6[di-H5],chch,[di+8]di,48bp}di

hand.le

;leo todos los principales

;CX=# d.e grupos principales*256.= # de byles por leer.

¿preparo numero de próximo grupo;a usarse de área de residentes

;copio los # de grupos en el archivo;a ios grupos en memoria para;las CH ventanas principales

bp,24 ;y las marco como residentesdi,bpbyteptr[dH-8],3bx,[di+16][di+20],bxbx,[di+18][dí+22]sbx

chriv5

exsi

Oaxexal, 160 ;80*2 bytes por lineachc1,cl ;+ 2 veces el # de columnach,G

ax,cxpddír,axexax

OOOOoo

;segmento donde están las variables;offset de la variable actual¡tipo: 'h1, 'a1 o ¥;direccion de entrada de vent actual;# de gnipos que faltan por traer¿columna escrita actualmente

Page 389: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE IT- PROVNT.ASM H - 380

linea dbrmmbyte dw

rvnt; pushallmovmovmovmovaddpushpushpopmovmov

rvnt]; addmovincmovmov

rvntl 0; movinclodsbdec

cmpjnecrnpjejmp

rvnlO; cmpjbepopmovjmp

rvntl 1; popmovmovmovmuíaddmovmovcmpjnejmp

rvnt2; cmpjne

¡línea escrita actualmente;# de byte mostrado del grupo actual

segvar,axoffvar5sidí5dirind

di,48esdses

¡dirección del Índice;ultima ventana valida

¡voy a buscar el nombre en las entradasidel índice.

bp,dibp,24di»bp ¡ubico entrada indicada pordh ;PHsi,bxcx,9 ¡nombre de 8 bytesah,es;[di] ¡leo 1 byte del nombre de una ventanadi

¡leo 1 byte del nombre buscadoexrvntl. 1

rvnlOal,0rvntl 1

rvntlOdbsdlrvntlesnumbyte,!

¡nombres iguales?

¡nombres diferentes¡iguales?

¡busco en todas las ventanas?¡no, sigo,01/05/89

¡si, nombre no existe,¡error — 1

rvntfesdi,dirind[di+6],dh ¡guardo # ventana actuala!324dh ¡ubico entrada actual ydi,ax ¡DS:DT apunta a ventana actualdirent,didh3[di-h8] ¡veo si es P o S.dh,3rvnt2 ¡S.

rvnt4 ¡P.dh,2 ;ffiopidaría. Reside?rvnt20

Page 390: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICES- PRO\7>T.ASMH - 381

jmprvnt20: mov

movmovrnovdecmovmovaddmovrnov

rvnt21: cmpjemovpushaddmovcmp

jecmpjepushmovmu!addmovpop

rvnt22: movmovpopincmovsubcmpjbemovaddmov

rvnt23; movínccmpjne

rvntS: movrvntSlj mov

cmpjemov

rvnt4 ;si.dI3[dH-9] ¿no, ubicarla ventana.byte ptr[dí4-8]>2 ;doy residencia a Ja ventanasi,d¡rind ¿DS;SÍ apunta al Índiceab,[si4-12] ;nbico tabla de residenciaab ;AX tiene el offset de la tablaal,0 ¿respecto del inicio del índicebp3sibp,ax ;DS;BP apunta a ia tablacl5[si-H 5] ¿CL = # grupo que va a ser dadobx,l6 ;a la ventana actualbyte plr[di+bx],G ¿termino ventana?rvntS ¿si.

¿no, leer valor en Tablabpbp,cxal>ds;[bp]aljtsi-Kj] ¿01/05/89: No quitarse la residenciarvnl22 ¿a sí misma,a!30 ¿grupo estaba libre?rvnt22 ¿si.si ¿no, quito residencia a la ventanaah>24ahsi,axbyte ptr[si+8]sOsia]>[si-!-6] ¿ventana actúa!ds:[bp],al ¿a la tabla de residencia

el ¿preparo próximo grupo a usarseah,[si+]2]ah,2clsahrvnt23 ¿01/05/89ab,[sí+9] ¿termino área de residentesah36 l==> voy a inicio de área dec^ah ¿secundarias[si+15]sct

bl ¿ya reviso cuatro grupos?bl^Orvnt21 ¿no, volver.bx3!6dh}[dB-bxJ ¿lpp.# de grupodh,0 ' ¿terniino?rvnt4 ¿si.dl,0 ¿no. CX;DX=uffset des^

Page 391: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

- PROVTÍT.ASMH - 382

movmovmovpushmovintpopmovmovaddmovmovpushmovintpopinccmpjne

rvnt4: movmovmovmovmovmovmovmovmovmovaddposdirmov

rvnt4J: lodsv/cmpjestoswjmp

rvnt42: pushmovmovmovpopinccmpjestosw

jmp

cx,0aI3Qah,42hbxbx,[si+13]21 hbx

;inicio de archivo

¡LSBEíC

dhi[di+bx+4] ;DS:DX apunta a bufferde lecturadl.Odx,sicx>256ahs3fhbxbx,[si+13]2 Ib.bxblbl.20rvntSlax,[di-H2]lineaban

;Leo un grupo del disco

;R£AD

;ya leyó 4 gnipos?;nos sigo leyendo.

;esq. sup. izq.

columna3alaI,[di+9]numgrp,alniimbyte50si;dirindah,[di+20]bp9dia!30si,ax

;# de grupos

;# de byte actual

;AX posición primer gnipo

;ST apunta al grupocolumnajineadf,pddir

al,lrvnt42

;variable?;si.

;no, mostrar carácter.rvnt44dsbx.ofíVards,segvarals[bx]dsofTvartipvnt,'h'rvnt43

;leo una variable

;ventana hexadecimal?;si.

;no, ventana ascii.rvnt44

Page 392: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

II - 383

rvnt43: hexascmov al,bhstoswlodswmovstoswincmovcalicmpjeadd

rvn431: cmp al,lje rvntS

rvnt44; cali rvntOcmp al,ljeinc

movcmpjaeincmovmov

al,bl

columnadx,sirvntOdxasirvn431si,2

¡AL se convierte en ascii en BX

¡muestro mitad mas significativa.¡Leo atributo siguiente.Supongo

;queAL—1 (otra variable) y¡muestro la otra mitad.

¡Con DX veré si hubo cambio de guipo.¡ve sí guipo actual ya termino.¡Hubo cambio de guipo?

¡no, SI apunta correctamente.¡si, hago que SI apunte bien,¡termino la ventana?¡sí, salir.

¡no, seguir.al,l ¡termino ventana?rvnt5 ¡si.columnaal,ds;[bpH4] ¡termino linea?al,cohimnarvnt41 ¡no, continuar.01/05/89linea ¡si, nueva linea.al,ds;[bp-H2] ¡primera columna.columna,al

posdir columnajineamov di,pddirmov al,ds:[bp-H5] ¡termino ventana?cmp aljineajb rvntSjmp rvnt41 ¡no, continuar.

nfnt5; mov numbyte,0 ¡si, salir.rvntf: popa U

mov aXjTiumbyteretn

rvntO; pushaddcmpjbdeccmp

jne rvntOlmov al,ljmp rvnlOSrvntO 1; mov al^numgrpmov alsds;[bp+9]sub a!3ahmov ah,0

bp ¡varia contadores y ve si es necesarionumbyte,2 ¡empezar otro guipo. Altera AX.numbyíeJQQh ¡termino un grupo?rvnt02 ¡no.

numgrp ¡si, un grupo menos por mostrarTiiimgrpjO ¡termino?

¡no.¡si, salgo con AL=1.

¡leo un # de grupo

Page 393: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

I I - PKO'W.ASM

add bp,axmov ahjdsrCbp-t-20] ;AX=posicion de nuevo gnipomov al,0mov T]umbytesOmov si,dirindadd si,ax ;ST apunta a nuevo gruporvnt02; mov al,0 ;AL=0 í=> no termina aunrvnt03; pop bp

/' retn

endm

Page 394: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APIÍNDICE IT - MOUSF-ASM

MACHOS MOUSE.ASM

* Archivo: MQUSE.ASM ** Descripción; Macros para interfase de ratón (modo texto ) ** Lenguaje Ensamblador ** Traducido del código fuente escrito en el libro: ** EZZEL, Ben» "Turbo C-H- Programming: An Object-Oriented Approach", ** Addison-Wesley, USA, 1990. TSBN; 0-201-55023-7 ** Historia: ** Autor. Versión Modificaciones *

a.t. 1.0 Conversión a lenguaje Ensamblador *

;Para usar éste macro es necesario que el ratón se encuentre previamente¿instalado con un controlador (mouse.com o mouse.sys).¡Existen funciones para el ratón en modo gráfico que son similares a las que;se presentan aquí a escepción de la función para la forma del cursor.¡También de acuerdo al fabricante del ratón existen otras funciones adiciona-;!es. Aquí solo se incluyen las que generalmente está presentes en todo con-¡trolador.;E1 ratón se utiliza con la Interrupción 51 (33h) del Bios, en caso de no;estar instalado el mouse la dirección de salto de ésta interrupción estará¡con un IRET o no contendrá nada, por lo que en ese caso no se recomienda que;se ejecuten las "funciones del ratón aquí listadas. Para controlar la presen-tía o no del ratón en el sistema se usa la variable PRESENTEX (x valor de 1;a JO) en cada uno;de IQS macros de tal forma que si PreseníeX es cero no se ejecuta el macro¡PRESENTE! se pone en Uno en el macro Mreseteo que es el que detecta 3a pre-¡sencia del ratón.

¡Forma de llamar a cada macro; mreseteo Nombrel>arg25arg3 (arg2 debe ser variable tipo word)

Mmuestra argl,arg2^ (argl puede ser variable o valor

Page 395: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

fl - MOlJStvASM JT _

; inmediato, arg2 debe ser variable; ambas tipo \vord); TTiposicion Nombre2,arg3; mmovera Nombrel,arg3; mpresionado arg],Nombre35arg3 (argl variable o valor inmediato tipo\vord); miiberado argl^NombreS^rgS (argl variable o valor inmediato tipo \vord); IVMimil Nombre I.sarg3; Mylimív Nombre! ,arg3; formacursor arglsNombrel,arg3 (argl word valor inmediato, registro,variable); mmovimiento Nombrel,arg3; mbrillante argl ,arg3 (argl variable o valor inmediato tipo word); MoveRatio Nombrel,arg3; mocultar Nombre3,arg3; mvelocídad argl ,arg3 (argl variable o valor inmediato tipo word)t>;En todos los casos "arg3" es una variable tipo byte que se define en el pro-;cedimiento que va a usar estos macros, se usa para indicar la presencia o;no del ratón, para condicionar la ejecución o no de los macros.

; Para emplear los macros defína variables (en el procedimiento desde el que; va ha usar los macros) del siguiente tipo:5

;* Para los macros: MreseíeOjMmoverajívDOimitjMYlJjiiit.MmovimientOjMoveratio;* ???! STRUCT ;???] indica cualquier nombre;* vari! d\vO ;;* var12d\vO ;;*???! ENDS;* nombre! ???! <0,0> ; esta línea realmente crea la variable "nombre 1" tipo;* ; estructura ???! con valores inicÍÉiles O.*i;* Para los Macros; Mposicion, FormaCursor;* ???2 STRUCUT ;???2 indica cualquier nombre;* var21 dvvQ;* var22 d\ O;* var23 d\vO;* ???2 BNDS;* nombre? ???2 <0,0)0> ; esta línea realmente crea la variable "nombre2" tipo;* ; estructura ???2 con valores iniciales O.*j;* Para macros: MPresionadosMliberado3Mocultar;* 7773 STRUCUT ;???3 indica cualquier nombre;* var31 d\vO;* var32 d^v O;* var33 d\vO

Page 396: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APESI1ICI-; H - MOII.Sr.ASM

;* var34 d\ O;* ???3 ENDS;* nombreS ???3 <0,0)0J0> 1Q&% !mea realmente crea la variable "nombreS" tipo;* ;estructura ???3 con valores iniciales O

; macro; mreseteo.; Descripción; Llama al driver de.! ratón, reseteando el driver a las; condiciones por defecto y retornando el estado del ratón; en el registro AX (-1 *frYfh* si el ratón está presente,; O si no está disponible). Si el ratón está presente,; el cursor del ratón se activa. El registro BX retorna el; número de botones del ratón (2 o 3). Ambos resultados son; retornados en la estructura Result (present,buttons).; Entrada : Ninguno; Salida ; Resultado; vari 1 ->Mouse presente (FFFF presesnte); (0000 ausente ): vari2 -> Número de botones

mreseteo macro Resultado^visiblejpresenlellocal Hnmreseleopush axpush bxmov ax,0 ¡función Ceromov rnvisíble,ax- ;mvisible indica si el puntero está (1)0

;no (0) visibleint 51mov Resultado.vari 1 ,ax ;pasardatos de retorno a la variablemov R.esu!tado,varl2,bx ;tipo estructura, Resultado .cmp a^Oje fjnmreseteomov presente!,! ;si ratón está presente entonces presente! — 1Mmuestra ^mvisible^resentel ;13amada al macro que muestra el cursorfmmreseteo:pop bxpop ax

Endm

;/* macro ; Mmuestra; Descripción: Muestra u Oculta el cursor del ratón invocando a ¡as; funciones 1 y 2 del ratón, respectivamente. En ei momento; que se actualiza la pantalla en el área donde se encuentra el; cursor del ratón, este cursor debs ser ocultado antes de

Page 397: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE U - MOUSEJiSM H - 388

; redibujar la pantalla y luego debí? ser mostrado de nuevo. De; otra manera, los efectos son sorpresivos e indeseables,; El ocultamientQ del ratón "no" afecta ías operaciones de; seguimiento de su posición y de operación de los botones,; entrada;; sbowstat -> valores 1 o O (mostrar | ocultar);*/ Salida: invisible!. -> Indica si el ratón está o no (1 o 0); visible;Se debe tener cuidado las veces que se realiza la función de ocultar el ratón;ya que por cada acuitamiento se debe hacer una función de mostrar. Si por;algún motivo se realizan 4 llamadas a ocultar se deben hacer 4 llamadas a;la función 1 para volver a mostrar,;Por ésta razón se usa la variable Showstata que indica el estado del ratón;con O se indica que está oculto y en caso de llamar a la función de ocultar,¡ésta no se realiza por que ya está oculto.

Mmuestra macro showstat,mvisiblel>presente2

¡existe ratón?;no

¡se dése mostrar u ocultar?

;ocuítar;función mostrar el puntero

;el puntero ya está visible?;si;no

¡indicar que ya está visible

¡función ocultar el puntero;ya estaba oculto?

local fmm3fínlmpushcmpjnemovorjzmovcmpjeintmovjmp

fínm;movcmpjeintmov

finlrn;pop

endir?

axpresentes, 1fínlmax,showstatax,axfínmax,lm visible 1,1fínlm51mvisiblel,!

short finí m

ax,2 ¡ra.visiblel50fínlm51m^sible^O

ax

;no¡indicar que ya está oculto

;/* Macro : mposicion; Pescripción; Reporta la posición del cursor del ratón y el estado de; sus botones. Las coordenadas de la posición son reportadas; en pixeles. Los bits correspondientes al estado de los; botones, empezando por 05 son colocados en 1 si el botón; ha sido presionado y en O si está libre.; entrada ; Ninguno

Page 398: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APETÍDICE H - MOUSEASMH - 389

; Salida ; Pos: var21-> Indica e] botón presionado; var22 -> Indica la posición en x; var23 -> Indica la posición en y¡ButtonStatus: el primer bit corresponde al botón izquierdo; (Birttonstatus - 1 se presionó botón izquierdo)¡ el segundo bit corresponde al botón derecho); (Buttonstatus - 2 se presionó botón derecho); el tercer bit corresponde al botón centtral; (Buttonstatus — 4 se presionó botón centra!)¡No siempres se cumple éste orden

rnposicion macro Pos5presente3localcmpjnepushpushpushpushmovintmovmovmovpop

P°Ppoppop

fín;end.m

fin ¡variable localpresentes J ¡ratón presente?

fín ¡noax ¡sbxcxdxax,351;Pos.var21,bxPos.var22,cxPos.var23,dx

dxexbxax

;i

¡función 3 obtener posición del puntero;y estado de los botones

¡estado de los botones¡Coordenada x¡Coordenada y

;/* ni a ero ; mm overa¡ Descripción; Mueve el cursor del ratón a una posición específica de la; pantalla. Las coordenadas usadas son absolutas., en pixeles.; entrada;Moví;; varll, var!2 -> coordenadas x e y de la nueva¡ posición del puntero del ratón¡Aunque las coordenadas se dan en pixels el puntero del ratón se ubica en las¡coordenadas del espacio del carácter más cercano.i; Salida ; Ninguna

mmQvera macro Movl>presente4local fincmp presente^! ¡ratón presente?

Page 399: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APENDICK H - H-390

jne fínpushpushpushmovmovmovintpop dxpop expop ax

frn;endm

;noaxexdxax,4 ¡función 4, mover puntero deí ratón

dx,Movl.varl2 ;51;

; /* Macro ; mpresíonado; Retorna información acerca del botón requerido:; Bstado actual (liberado, presionado); Número de veces que ha sido presionado desde la última llamada; a esta función; Posición del ratón al momento de presionar el botón; Resetea información, de cpnteo y posición; Función 5 del ratón; entrada; buttons -> Sí botón del cual se requiere la información; (O = izquierdo, 1 = derecho, 2 = centro); Salida : Pressed;var31 -> Estado de botón (Activado(1)3Desactivado(0)); var32 -> Número de activaciones desde última llamada; var33,var34 -> Cordenadas x, y respectivamente al momento; de activación del botón; Pressed.var31 entrega el número de veces que se ha presionado el botón desde; la última llamada a ésta función. Si las llamadas son muy cercanas entre; ellas siempre se detctará una sola pulsación. Si se quiere utilizar el ratón; con doble click se debe insertar retardo entre cada llamada para dar el; tiempo necesario al doble click (retardos entre 300 y 600 milisegundos).

mpresionado macro buttons>Pressedspresente£local fín ;variable locai para el macrocmp presente5il ;raíón presente?jne fín ;nopush axpush bxpush expush dxmov ax,5 ;función 5, información de botónmov hx^buttons ;g£querimiento para el botónint 51 t ; ' ''mov Pressed.var319a2^;pasjrresultados a la variable tipo

Page 400: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - MOUSEjVSM H - 391

movnsovrnovpoppoppopP°P

fin;endm

Pressed,var32>bx ¡estructura PressedPressed, var3 3,exPre3sed.var34»dxdxexbxax

; /* roacro '• mliberado; "Retoma información de liberación de botórj del ratón; Función 6 del ratón?; entrada: botón -> El botón del cual se requiere la información; Salida ; Relased: var31 •> Estado de botón (Activado(l),Desactivado(0)); var32 -> Número de activaciones desde ultima llamada; var33,var34 -> Cordeladas x, y respectivamente al; momento de liberar el botón5;La diferencia de ésta función con ía anterior es que entrega las coordenadas;del puntero del ratón al momento de liberar el botón indicadomliberado macro boton,Releasedspresente6

localcmpjnepushpushpushpusbmovmovintmovmovmovmovpoppoppoppop

fin:endm

finpresente^! ¡ratón presente?fin ;noaxbxexdxaxj<5 ;bxsbotori ¡Requerirniento para el botón51Released.var313axReleas e d.var32,bxReleased.var33,c?c ;Released.var34,dx;dxex.bxax

; /* Macro : Mxlimit

Page 401: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - MOUSEASM H - 392

; Asigna rango horizontal mínimo y máximo para el puntero del ratón.; El puntero del ratón solo se puede mover dentro deí rango; Función 7 del ratón; entrada; Xlimit; vari 1 -> cordenada x mínima de moviminío del cursor; vari 2 -> cprdenada x-máxima de moviminto del cxirsor

Mxlimit macro Xíimit,presente7local fín

presente?, 1 ;ratóü presente?fín ;noaxexdxax,7 ;función 7, restringir área de mov. del punterocx>XKmit,varn ;dx,Xl im.it. vari 2 ;

51dxexax

jne

pushpushmovmovmovintpopP°PP°P

fin;endm

;/* Macro ; Mylimit; Asigna rango vertical mínimo y máximo para el cursor.; Mueve el cursor del ratón dentro del rango; Función 8 del ratón; entrada; Ylimit; vari 1 -> cordenada y mínima de moviminto del cursor; (en pixels); var!2 -> cordenada y máxima de moviminto del cursor; (en pixels); El cursor sólo puede desplazarce dentro de los límites indicados.

Mylimit macro Ylimit5presente8local fíncmp presente^ 1 ;r3"tón presente?jnepushpushpushmovmovmovintpoppoppop

fín ;noaxexdxax,8 ;fínción 8, limites verticales del mov, delex, Ylimit vari 1 ¡puntero del ratóndx,Y]imit.varl2 ;

51dxexax

Page 402: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APKNDICE B - MOTISKASM

fin:endm

;/* Macro ; formacursor; Asigna e! tipo de cursor en modo texto, O — software, 1 = hardware; Cursor software: entrada 2 y 3 son las máscaras de pantalla y cursor; Cursor hardware; entrada 2 y 3 especifican las líneas de inicio y fin

10 del ratón; entrada : hardsoft -> Software, hardware; Cursor; variable tipo estructura; vari 1 -> máscara de pantalla/línea de inicio; var!2 -> máscara de cursor/línea de fin; salida ; ninguna?; Para el cursor "hardware" vari I indica la línea de inicio del cur-;sor dentro del cuadro que comprende un carácter, mientras que el segundo;valor indica la línea final. En este caso el cursor es rectangular. Para mo-;nítor monocromático el rango va de O a 7 y para CGA de O a 14.; Para el cursor "software" los bits de la máscara de pantalla hacen un AND;lógico con el carácter existente en ía pantalla, éste resultado hace un XOR¡lógico con la máscara del cursor y el resultado es el que se presentará en¡pantalla. Cada bit de la palabra de máscara de pantalla y de cursor repre-;senta lo siguiente;; B't Descripción; Q..7 Código de carácter Ascii extendido para la forma; del cursor; 8. .10 Color de presenta ción( Ver atributos para colory; B/N); 1 1 Intesnsidad de brillo (l=alta, O^baja); 12,. 1 4 Color de foi?do(ver atributos); 1$ Parpadeo (1) sin parpadeop (0); Valores recomendados para la máscara del cursor son; TFQQh, FFFFh o en gene¡raí los § bits menos significativos deben ser todos Uno o todos Cero. Para la¡máscara del cursor los 8 bits superiores deben ser cero, con los 8 menos síg-;nifícativos de acuerdo a la forma del cursor deseanda. Para obtener un cursor¡transparente se recomienda la máscara de pantalla 77FFhy la máscara de¡cursor 770Qh

5

formacursor macro hardsoít.,Cursor.[presente9local fincrnp presente?, 1 ¡está presente el ratón?

¡nojnefínpushpushpushpushmov

axbxexdxax,10 ¡función Oah

Page 403: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AP15ST1ICK II - MOUSKA-SM H - 394

roovmovmovintpoppoppopP°P

fín:endrn

bxjiardsoft ;

dx,cursor.varl2 ;51dxexbxax

;/* maero : mmovimiento; Reporta el movimiento en pasos de! cursor desde la última llamada; Función 11 del ratón; Entrada ; Ninguna; Salida: Movemení; var21 -> canteo de pasos en x; var22 -> conteo de pasos en y1

;Los valores de salida indican el número de pasos que se ha movido el¡puntero en el sentido vertical y horizontal desde Ja última llamada a este¡macro.¡Para los ratones más antiguos cada paso representa l/ .IOO de pulgada;(100 mikey/pulgada), los más actuales tienen 1/200 pulgada porpaso (200¡mikey/pulgada, y hasta 320 rnilcey/piilgada para ratones de alta resolución,;no es muy usada.mmovimiento macro Movementspreseníe1.0

local fín ¡variable loca] para este macropresentelOJ ¡ratón presente?fín ;noaxcxdxaxj 1 ¡función 1151

Movemení.var21,ex ¡pasar parámetros de salida a la variableMovement.var22,dx ¡tipo estructura Movementdxexax

cmpjnepushpushpushmovintmovmovpopP°PP°P

fín:endm

;/* Macro: mbriliante; Funciones 13 y 14 del ratón; entrada : Seí -> aclivar(l), Desactivar(O); Activa/Desactiva la Emiilacíój) del ñincionamiento de lápiz óptico

Page 404: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al'ENDICK II - MOUS&A&U

; (con AH-13 se activa); Entrada; Set: O — activar; 1 = desactivar;esta función no es muy utilizadambrillante macro Setspresente1.1.

loca! fín

H-395

cmpjnepushmovcmpjemov

fínset:intpop

fín:endm

preserfinaxax,13setjlfínsetax,14

51ax

iteUjJ

; Encendido (OH)

; Apagado (OFF)

macro ; MmoveRatioMovimiento pixel a pixel con radio R/8Función 1 5 del ratónentrada Rario ; vari 1 -> determina en la dirección horizontal

cuántos pasos/pulgada requiere moveresefísicamente el mouse para que el punterose desplace 8 pixels

vari 2 -> determina en la dirección verticalcuántos pasos/pulgada requiere moveresefísicamente el mouse para que el punterose desplace 8

;Se recomienda para ua ratón de 2QQMikeys/puIgada usar para Xsize un valor de;8 Mikey/8pixel y para Ysize 1 6 Mikey/Spixel, con esto el cursor cubre ]a pan-;ta!la al rodaren un espacio de 352 x2,Q pulgadas.

Mmoveratio macro Ratio.preseníel^local fíncmp presente!2J ;ratón presente

;nojnepushpusxpushmovmovmovint

fínaxexdxax. 1 5cx,RadxaRa

51

¡función 15x^Ratio.varl 1 ;pasar parámetros de entrada a CX

Page 405: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H -326-

dxexax

poppop

P°Pfin:endm

; Macro ; moculíar; Selecciona el área donde el ratón, permanece oculto; Función 16 del ratón; entrada; Conceal: var31 , var32) var33, var34; -> demarcan los valores izquierdo, dercho, arriba, abajo: del área de ocultamiento

mocultarlocalcmpjnepushpushpushpushpushmovmovmovmovmovintpoppoppop

p°ppop

fín:endm

macro Concea],presentel3finpreséntelo,!

finaxexdxsidiAXJ6;cx,Conceal.var31 ;dx,ConceaI.var32 ;si,Conceal.var33 ;di,Concea!.var34 ;51disidx.exax

;/* Macro : mvelocidad; Asigna la velocidad de desplazamiento del ratón, en mickeys/segundo; para acelerar ]a respuesta al movimiento del ratón; Función ] 9 del ratón; entrada: Speed -> Valor umbral de velocidad desde la que se aplica; la aceleración al movimiento del ratón.; (tvfikey/pulgada);AI momento que e] cursor exeda la velocidad umbral la velocidad se duplica;en algunos ratones mientras que en otros aumenta-de acuerdo a una curva;determinada.

Page 406: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

SOJOTÍUI-Qp OAItp-HÍ [3p UUf *

uipuo

Xlí

xpTí

poods'xp¿

xpX13

irg

'^juosojd

ííoddodluí

AO11J

AOUI

i[ündi[snd

oufduio

CUOUKI puppopAiu

WSVJSAOW • H

Page 407: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - DESENS-ASM j_[ _ 245

mov al,0repne scasbjne ConParam ¡si no se lo encuentra, hay parámetrosadd • cx,38 ¡poner38 espacios al final del único mnemomov al,1'dec direp stosbmov al,O ;poner un O al finalstosbjmp FinDesDet

ConParam:mov di,bx ¡recuperar el comienzo del mnemotécnicomov cx,8 ¡buscar un espaciomov al,1'repne scasbcmp cx,l ¡en que posición esta el espacio?jb sexta ¡si CX=0, octava posición; mover parámetros

;una posición a la izquierdaje PonSpcFin ¡si CX—1, séptima posición, no se deben movermov cx,di ¡los parámetrosmov ax,es ;ci CX>=2, sexta o menos.mov ds,ax ¡en este caso, mover los parámetros a lasub di,bx ¡derechamov dx,7sub dx3di ¡DX^número de posiciones por mover a la derechamov di,bxmov bx,cx ¡BX-comienzo de los parámetrosmov cx;43mov al, Orepne scasb ¡buscar el fin de stringdec dimov si, diadd di,dxstd ¡dirección inversa

CicDer: lodsbstosbcmp si,bx ¡se llego al comienzo de los parámetros?jae CicDer ¡mover el stringmov al,' '

CicSpc: cmp di,sije PonSpcFinstosbjmp short CicSpc

Sexta: rnov ax,es ¡mover los parámetros una posición a la izq.mov ds,axmov si, di

Page 408: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDICE II - ENSAMBLA-ASM jj _ 247

MODULO ENSAMBLA.ASM

.model small

.486

ÁREA PARA DATOS

.data

transit db 32 dup (?)

mnemo db 'ADdl,0,IPUSh'I6I'POp'í7}'Or',8db !ADc',10H}!SBb!I18H,!ANd'320H!'DAa!,27Hdb 'SUb'a28HJÜAs!í2FH9IXOr's30H,IAAa1,37Hdb !CMp')38H!(NEAr'339H,tFAr1!3AH,lPTrT33BHdb 'BYTe')3CH,!WORd1,3DH,'DWORd133EH)1AAs';3KHdb ÜNtf^HjDEc^Et'SHORI1, SOH/QWORd', 51H, *NOf , 52H, "NEg", 53Hdb !IvrUl1,54H)TlVÍXJl1!55H)!DIV,56H,!rDIV!57H

db lJNAe',72H3fJKbl,73H3f,Tb',72ÍT3'JAe1373Hdb IJz'J74H,IJNzI)75HsIJNaIs76HífINBe(577Hdb 1.TPe',7AHII.TPo',7BHí1.TNGet,7CH,!.TNl',7DHdb IJNg'97EH,'JNLeIí7I!H,IJoIí70H,IJNoI,71Hdb lJcV72H3'.TNcf,73H3tJe!,74H!!.m'eI! 75Hdb 1,TBeT)76H,1Ja!,77H)7s';78H,fJNs'579Hdb 1Jp[I7AH)'JNp!37BH3!Jl137CH3fJGe;7DHd b I J L e ' 7 E H I J "

db 'TESt!,84Hí'XCHgf,86H,IMOV)88K5^Ea',8DHdb rNOp1í90H3'CBw',98H5'CWd1,99H3'CALr59AH;WAIt1í9BHdb rPUSHf39CH3FPOPf39DH3'SAHf,9EH3(LAHf,9FHdb 1MOVSb',OA4H,1MOVSw'3OA5HJ'CMPSb',OA6HI1CMPSw1)OA7Hdb 1STOSb13OAAH3'STOSw',OABH,t-ODSb(,OACH1!LODSw',OADHdb 1SCASbI,OAEH,'SCASw')OAFH,lREt'JOC2H,fRETnt)OC2Hdb 'LEs'3OC4H3rLDs'3OC5H3'RETf,OCAH;rlNtt3OCCHdb !INTo'3OCEH3lIREí';OCEH;lROr;ODOH,1ROr!)OPlH

db rRCr3OD2H3FRCrI,OD3HIfAAjn!3OD4H3!AAd!3OP5H

Page 409: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II - ENSAMHEA.ASM H - 248

db lXLAt',OD7H,'ESc')OD8HJ'SHl1IODCH)tSHr),ODDHclb 1SA]1)ODCH,1SAr')ODFH,ILOOPNe1,OEOH,1LOOPNz1,OEO?Idb !LOOPe!,OElH3!LOOP7:jOElHJ.OOpt,OE2H,'JCXz',OE3Hclb 1n1)OE4HJ1OUt1,OE6H)1.nvípt,OEAH51LOCk15OFOHclb [REPNe!,OF2H;REPNz^OF2H)!REp1JOF3H)!REPe1)OF3H,1.REPz'íOF3Hdb 1HLt'5OF4H,1CMc')OF5H)lCLc15OF8H,1STc1,OF9Hdb lCIJtíOFAH,lSTil1OFBH,tCLd1lOFCH,ISTdlIOKDHdb OFFH

regs db 'ALCLDXBLAHCHDHBH1

db 'AXCXDXBXSPBPSIDrdb 'EAXECXEDXEBXESPEBPESIEDr

sregs db 'ESCSSSDSFSGS1

loners clb 27H,2FHI37H)3FHJ90H,98H)99H)9BH)9CH,9DH,9EH}9FHdb OA4H,OA5H,OA6H9OA7H,OAAH9OABH,OACHSOADHÍOAEH,OAFHdb OCEH,OCKHJOD4HÍOD5H,QD7Hdb OF4H9OF5H,OF8H1OF9H9OFAH,OFBH9OFCHSOFDH

oners db 6,7,40^480,52H, 53H, 54H, 55H, 56H, 57Hdb 70H,71H!72H,73H)74H,75H,76H577Hclb 78H)79H,7AHÍ7BHÍ7CH,7DHJ7EHJ7FHclb 9AH,OC2HJOCAI1J,OCCT-I,OEOH,OE1H)OE2H5OE3H,OEAH

ÁREA PARA CÓDIGO

.code

NEsp equ 10delspc proc near

;Este procedimiento salta los espacios y los TABs en el string por;ensamblar y deja SI apuntando al primer byte que no sea un espacio.5

¿Entrada: DS:SI apunta al punto del string desde el cual; se desea proceder.¿Salida: DS:SI apunta al primer byte que no es un espacio.; GY es 1 si hay más de NEsp espacios (error), en; cuyo caso DSrSIno es alterado

push. axpush expush bpmov cx,NEspmov bp,si

¿máximo NEsp espacios

Page 410: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE R - ENSAMBLAASM I I - 249

busc: loclsbor al, aljz errdelcmp al,''je spaccmp al,9jne encont

spac: loop busc

errdel: mov si,bpstcjmp short findl

encont: dec sicíe

findl: pop bppop expop axreln

delspc endp

;si se llega al final del stringun espacio?

;si, saltarlo;bay un TAB?;no, hecho

;saltar el espacio y ver sig. car.

;apuntar al carácter válido

encnem proc near

í

;Este procedimiento encuentra el pseudocódigo del mnemotecnico que está al;comienzo del string por ensamblarse.

3

;Entrada: DS:SI apunta al string, que debe terminar en 0., ES:DJ es la dirección en donde se pondrá el pseudocódigo.

•>;Salida: DS:SI apunta al final del mnemotecnico 4- 2 en el string si; este .fue encontrado (pues debe terminar con espacio); ES:DI apunta al final del pseudocódigo + .1; CY es J si el mnemotecnico es inválido o si hay error; como en DELSPC 3 en cuyo caso DS:SIy ES:DIno son; alterados (excepto si había espacios désele DSrS.T); AX contiene el pseudocódigo (AL=0, AH== cod.)

calijepushpushpushpushmovmovmovmov

delspcfinenc2bxdxesdiax,@dataes,ax

;encontrar el mnemotecnico;en caso de error, terminar

;hacer que ES;DI apunte a los mnemotécnicosdi, offset mnemodx,si ¡preservar el comienzo del mnemotecnico

Page 411: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA-ASS,!

pop esfínenclipop dx

pop bxfinenc2:retnencnem endp

public encregencreg proc near

H - 251

;Este procedimiento encuentra el código del registro al que apunta DS:SI.í;Entrada : DS :SI apunta al ascü del registro

¡Salida: DSiSIes cambiado según DELSPC; AH es alterado; AL código de] registro; CY 1 si no es un registro o si hay error de DELSPC

cali delspcje finencreglpush expush bxpush espush di

;si hay demasiados espacios, fm

mov ax,@datamov es,axmov dijOffsetregs japuntar ESJ3I a la tabla de registrosmov JiaXjlsiJ ;LCanc! Eax,0dfdfdfh

mov cXj24srchregrmov Ebx,es:[di]

cmp ex, 8jbe rupOcmp ax,bxje foundreginc diinc diloop srchregstc ;si no sejmp shorl: errreg

rupO: and ebx,0fffirrhcmp eax,ebxje foundreginc diinc diinc diloop srchreg

JDJü-J JADO aso.;en mayúsculas

;de la tabla

lo encontró, error

Page 412: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEETÍDICE H - ENSMEBLA-ASM H-253

malsreg;stc ;si no se lo encontró, errorjmp short errsreg

foundsreg:mov al,[si+2] ¡tercer carácterand aljOdfh ¡hacerlo mayúsculacmp al,'A1 ¡si es una letra, maljb oksregcmp al/Z1

jbe malsregoksreg: mov al,6

sub al,cl ¡encontrar el código del registroor al,40hcíe

errsreg:pop dipop es

finencsreg:pop ex

finencsregl:retn

encsreg endp

ascahex proc near

¡Esle procedimiento transforma el string en AX (con AL = MSD) a un byte¡en AL, CY = 1 si no hay tal hex en AX.

push excmp ah,'fja errhexcmp ah,'a'jb tstaland ah,0dfh

tstal: cmp al}'fja errhexcmp al,'a1

jb trnsand al,0dfh

trns: cmp ah,'A'jb numahsub arVA'-'9'-l

numah: cmp al,'A* ¡lo mismo con ALjb numalsub aVA'-'9'-l

numal: sub ax,'00' ¡pasar de ascii a numéricocmp al, 16jae errhexcmp ah,16

;transfonnar el carácter en AJí a mayúscula

¡transformar el carácter en AL a mayúscula¿ajusfar el carácter en AH si es alfabético

Page 413: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EHSAMBLAASM ÍI - 254

jae.movshíorcíejmp

errhex: stcíinhex: pop

retnascahex endp

errhexc],4al,c1al,ah

short íinhex

ex

;condensar el número

esletr? proc near

;Este procedimiento determina si el carácter contenido en. AL es un. dígito;o una letra, en cayo caso CY - O, y de lo contrario, CY = 1.¿AL es alterado.

cmp al/O'jb noesltcmp a!3'9'jbe siesltand al,0dfh ¿mayúsculacmp al,'A'jb noesltcmp al}'Z'jbe sieslt

noeslt: stcretn

sieslt: cíeretn.

esleír? endp

public eshex?eshex? proc near:

¿Este procedimiento determina si el string al que apunta DS :SI es un número¿hexadecimal, en cuyo caso encuentra su valor.3

¿Entrada: DS:SI apunta al string. excluyendo signos +, - o espacios

¿Salida: AL = 16 si el número es de 1 o 2 dígitos, 32 en otro caso; AH = longitud del string del número; BX = valor del número; CY = 1. si lo apuntado por DS:ST no es un número o si es un; número de mas de 32 bits

Page 414: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBUVASMH - 255

pushxor

trycero:cmpjneinc

jmpnoceroin:

movorjzmovmovcalijncmovxorjmp

noproblem:movcalijemovcalijemovcalije

movcalijestcjmp

N4Dig: movcalijemovmovcalijemovmovmovjmp

tresdigrmovmovcali

dxbx,bxbyte ptrfsi-i-bxyO' ¡buscar ceros inicialesnoceroinbx ;short trycero

contarlos en BX

dh,bl ¡número de ceros er¡ DHbx,bxnoproblemah,fsi4-bx]al,'G'

ascahexnoproblemax}16bx,bx ;fmnum

al,[si+bx+l]esletr?undigal,[si+bx+2]esletr?doscligal,[si+bx-i-3]esletr?tresdig

al,[si+bx+4]esletr?N4Dig

short errnumax,[si+bx]ascahexerrnumd1sa1ax,[st+bx+2]ascahexerrnumb1,albh,dlax,420hshort fínnum

;si no hay ceros iniciales

¡si el stríng era solo ceros, ya no debe;haber mas caracteres hexadecimales válidos

salir con cero

¡tiene más de 4 dígitos?¡no, OK

¡si, error

¡el número tiene 4 dígitos

¡AL-32, AH-4

alj'O' ¡número de tres dígitosah,[si-t-bx]ascahex

Page 415: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBLA.ASM H - 256

JC

movmovcalijemovmovmovjmp

dosdig: movcalijemovxormovjmp

undig: movmovcalijemovxormov

finnum: addcrnpjbemov

longbyt:clcerrnum: pop

retneshex? endp

esreg? proc

errnumdl,alax,[si4-bx-Kl]ascahexermumbl,albh5dlax,320h ;AL=32, AH-3short finnumax,[si+bx] ;número de dos dígitosascahexerrnumbl,albh,bhax,210h ;AL=16, AH=2short finnumal,'0'ah,[si-i-bx]ascahexermumbl,albh,bhax,110h ;AL=16, AH=1ah,dh ;ijicluir]os ceros en la longitudah,2longbyl:a1,20h

dx

near

;Este procedimiento es similar al anterior: encuentra si el slring al que;apunta DS:SJ es uno de ]os registros BX, BP, SI o DI.5

¿Entrada: DS:SI apunta al string excluyendo signos (-f o -) y espaciosi;Salida: CT=1 si hay error, caso contrario:; AH = 2 (longitud obvia del slring); AL-] si SI; 2 si DI; 4 si BX; 8 si BP3 -

mov ax. [si]

Page 416: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBIAJiSM - 258

shlmovcaliJclodsbcmpjnecalijnc

errml: jmpnopref: xorcorchetes:

xorxormovlodsbcmpjnecalijecmpjneinccali

Jc

analiz: calijemovjmp

noh.l : calijnc

errm2: jmptstmin: cmp

jneinccali

Jc

calijenegmov

rdynum: xortest

J7-movxoradd

al,cldh,aldelspcerrml

al,':'errmldelspccorcheteserrmemdh,dh

dl,díbx,bxcx,bx

«VE1errmjdelspcerrmlbyte ptr[sitstminsidelspcerrmleshex?nohlcx,bxshortrdyresreg?rdynumerrmembyte ptrfsi.analizsidelspcerrm2eshex?errm2bxcXjbxoll,aldl,alerrm2al,ahah,absi,ax

en dh

;hay los dos puntos reglamentarios?:no

¡codificar inexistencia de sreg

jinicializar primera parte del código;inicializar desplazamiento

;el carácter actual debe ser eljcorchete reglamentario

;no;si, ignorarlo

;hay un número hex?;no;si5 preservar su valor

um;hay un registro reglamentario?

;no, error|,'-';inicia con un signo -?

;no;si, lo siguiente solo puede ser un número

¿encontrar el negativopreservarlo

;poner el bit correspondiente en DLjestaba ya puesto, implicando duplicación?

;si, errorjlongrtud del string

;ajlistar SI

Page 417: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJVSir II - 260

jnc rdynumSerrm4: jmptstmin3;cmp

jnecalijecalijenegmov

rdynurn3:xortestjzmovxoraddcalije

lodsbcmpjne

condensar:movandcmp

Je

movandcmpjemovandcmpjemovand

jz

xortestjnzmovxorandcmpjne

errrnemal,'-'errrn4dels'pcerrm4eshex?ernm4bxcx,bxdl,aldl,alernn4al,ahah,ahsi,axclelspcerrm4

al,']'emn4

al,dlal,3al,3errmemal, dia!512al,12errmemal, dial530haUOherrmemal,dla],3fherjinem

íih,ahdl,2sbOal,dlal,lal,5al,5biri

jdespues de un - solo puede haber un número

¡poner el bit apropiado¡duplicación?

;si, error¡longitud leída hasta ahora

; a justar SI

¡ya se ha leído 3 cosas, debe haber;un corchete Analizador

¡determinar si el código;en DL es incongruente¡si DL = OOKEDCBA, entonces

;error - + AB + CD -i- EF

¡inilicializar código condensado:bitO=~AC + B

Page 418: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

dpU9 UI3UIOU3

XE

xqxoxpdq

dq'isuiouiugijous

¿(o>o + £L + y) =

puoouy

St*lPpuooug

¿'le

9C'IP

V)

a-o- +

iqs

doddoddoddod

dod :uiouiuE|:o;s

AOUI :U13UI-I-I3

duifop

MSOiS

AOUI

AiSOJS

JO

AOUI

AOUI: puooutiJO

zfptte

zfIS91

JO

AOUI

zf

9f

duiopUE

JOX

AOUI

JO

zufpue

AOUI

AOUI

jo :[qszuf

pUG

AOUI

zuf

jo :oqs

~ H rsswiaiws!¿a - H

Page 419: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBLAASM

stosbmov ax;bxstoswjmp shortnoerrhex

unbyte: rnov ah,blstossv

noerrhex;cíe

fin en cheje:pop dxpop bxpop axretn

enchex endp

enspasol proc near

ir _

;Este procedimiento ejecuta el primer paso de compilación, es decir, la;traducción de un stríng alfanumérico a seudocódigos que serán transfonnados;a código verdadero por otro procedimiento.3

;Entrada: DS:SI apunta al string por compilarse, que debe terminar; enO.; ES;DI apunta al lugar donde se desea el seudocódigo3

;SaIida: DS:SI es alterado; ES;DI es alterado\^ set si hay error

push. axpush bxpush expush dxcali encsreg ;es la instrucción un prefijo como ES; ?je nosregpref ;noinc si ;si, proceder en consecuenciainc sicali delspcmov ah,al ;preservar códigolodsbcmp al,';' ;por sintaxis, debe haber :jne errpasolmov a!3ahstosbjmp short bienpasol

nosregpref:

Page 420: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - H - 264

calijecmpjbcmp

J9

calijecalijecmpjbcmpJacalijecalijecmpjbcmpjbe

noprefir:cmpjbcmpjbecmpjecmpje

bienmneimovmovmov.movmov

lone?: cmpjej'ncloopjmp

eslonenmovmov

calijnc

encnemerrpasolah,0íí)bnoprefirah,Gf3hnoprefirdelspcbienpaso.1encnemerrpasolab,0ívhnoprefírah.OShnopreflrdelspcbienpasolencnemerrpasolah,OíDhnoprefirah,0r3hencaso 1

ab,39hbienmneah,3eherrpasolah,50herrpasolah,51herrpasol

dx,dsbx,@datads,bxbxs offset 1cx,35ah;[bx]eslonerbxlone?sh orí bayads}dxbyte ptr es

delspcerrpasol

;lo primero debe ser \m mnemotécnico

;es un prefijo RGP o LOCK?

;si, buscar siguiente mnemotécnico;si no -hay más que el prefijo, terminar

;es un segundo prefijo KEP o LQCK?

;si, buscar siguiente mnemotécnico;si no hay mas que el segundo prefijo, terminar

;no puede haber un tercer prefijo

;el mnemotécnico inicial no puede ser NEAR,;PTR, BYTE, etc

¡preservar .DS

¡averiguar si el mnemotécnico es uno cíe los¡que no aceptan argumentos

/

byte ptr es;[di-2],l, ¡marcarlo como loner¡apuntar al punto inmediatamente después

¡del mnemotécnico y buscar el fin de slring¡si hay mas caracteres válidos, error

Page 421: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA.ASM H-265

bienpasol:mov ;stosbcíejmp short finpasol

errpasol:stc

finpasol:pop dxpop expop bxpop axretn

hayarg: movmov

one?; cmpjeincloopjmp

esoner: movcmpjecmpjne

admitedp:ormovjmp

solouno:movjmp

dosarg: xorargs: mov

calijnccmpjecmpjecmpjejmp

enarg: calijnccali

bx, offset onerscx,35 ;averiguar si el mneinotécnico es uno de losah,[bx] ;que aceptan un solo argumentoesoner ;sibxone?shortdosíirgbyte ptr es:[di-2],2 ;marcar)o como onerah,9ah ;CAUJ?admitedp ;si, puede haber dos puntosah50eab ;,TMP?solouno ;no

byte ptr es:[di-2],4 ;marcarlo como JMP o CALLcl,2 ;rnarcar que puede haber un argumento dobleshort args ;de dirección absoluta

cl,.l. ;marcar que debe haber solo un argumentoshort argscl,cl ;marcar que debe haber dos argumentosds}dxdelspcenarg ;confinnar presencia de argumentosah,0c0h ;suno presencia solo es admisible conbienpasol, ;KET, ,RETN o RETFah,0c2hbienpasol.

bienpasolshort errpasolencmem jbuscar argumentossegargencreg

Page 422: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJE! H-266

jestosbincincjmp

noreg] ; calijestosbincincjmp

nosregl;calljnccalijecalicalijnccalije

segarg: orjzcalijecmpjnelodsbcmpjnecalijejmp

hay dos: calijelodsbcmpjnecalijnccalijestosbincinc

bienj : jmpnoreg2: cali

noregl

sisishort segargencsregnosregl

sisishort segargenchexsegargencnemerrpasoj.encnernencmemsegargenchexerrpasolel, el ;<hay dosdelspcbienlcl,2 ;errpl

;s(al,1:1 ;s(

errplenchexerrplbienpasoJ

delspcerrpl

al// ;elerrplencmembienlencregnoreg2

sisibienpasolencsreg

;buscar por ejemplo BYTE PTR

;el PTR es opcional

;puede también ser un número (para saltos)

;dos argumentos?;si

;no, uno solo

;era JMP o CATX?;no

;solo se admiten dos argumentos aquí si están;separados por :

;si hay un solo argumento, error

;el separador entre argumentos es la coma

jbuscar segundo argumento

Page 423: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAAS&I H - 268

pushlodsbcmpjemovmovmovshrmovjzdecjzdecjzdecjzdecjzlodswJTTlp

esd*ttob:lodsbxor

;fin de instrucción?

esinsínlodsbjmp

esregis:movandmovjmp

essregi;movandmov

;obtener el tipo;en DL

esmemonmovmovshlandandorlodsbxchgmov.lodswrnov

rdytipo:clcjmp

ex

31,00}!

finjnstch,ahah,alcl,5al,c]d1,3lesinstra]esregisa]essregíalesmemoralesdatab

;es dato de wordshortrdylipo

;es dato de byteah,ahshortrdytipo

;es mnemotécnicoshortrd}4ipoal,ah ;es registroa1,0fhah,chshortrdytipoal,ah ;es registro de segmentoa1,3ah,chshortrdytipo

a],ah ;es memoriac],3

al,c1a1,0c0hah,7ah,al

al,ahbx,ax

ex, 4

shortfintipo

Page 424: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFENDICE K - EHSAMBIAASM n 7^0

fir)1ipo;pop exretn

tipo endp

getpref proc near

:~ ~

;Este procedimiento obtiene el prefijo de redefínición de segmento a partir;del número de registro de segmento.

;Entrada: BH - xP Srxxxx con P ~ presencia de prefijo

5

;Salida: AH = O si no hay prefijo, o; prefijo5 -

xor ah,ahtest bri,40hjz fingtpmov ah,bhshr ah,land ah318hor ah,26h

fingtp: retngetpref" endppref? proc near

3

;Este procedimiento determina si debe incluirse un prenjo de redennición;de segmento antes del opcode, del cual solo debe haber j. byte, y ES:I>I:debe estar apuntando a la dirección siguiente a dicho byte. Haceía;inclusión y íos ajustes del caso de ser necesario.

3

;Enírada: ÁH O si no debe haber prefijo; opcode del prefijo en caso contrario; BSfDT dirección de] byte de opcode + 1

;Saiida: AL es inalterado o contiene el opcode; 1)1 es ajustado; CX incrementado en I sí hay prefijo

cmp ah.0 ;hay prenjo?je noprefíjomov aí,ah ;si, ajustarxchg al,es:[di-l']sfosbinc ex

noprefijo:retn

pref? endp

Page 425: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

M - KKsÁMHuuüíaa. H - 270

sízedisp proc near);Determina dados los bits 6 y 7 de AL, que debe tener el byte de modregr/m,;el tamaño en bytes de] desplazamiento u offset. Luego incluye este¡desplazamiento en el opcode.

í

;Entrada: DL o DX desplazamiento; AL byte de modo de direccionamíento; ES:DI apunta al lugar del opcode donde va el desplazamientoj;Salida: AX es alterado; ES:DI es ajustado; CX incrementado según el desplazamíento3

test aljOcOh ;obtener el moujz despí? ;sí es 00, averiguar sí hay desplazamientoand al,0c0íícmp al,OcOTi ;es 1.1?je nodesp ;si, tampoco hay desplazamientoinc excmp a]340h ;es 01?jne dosbyt ;nomov al,di ;si, desplazamiento de un bytestosbjmp short nodesp

despJ?: and al,7 ;si mod ~ 00 y r/m = 110,cmp al,6 ;el modo es directojne nodesp

dosbyt; mov ax,dx ;desplazamiento de dos bytesstoswinc ex

nodesp: retnsuedisp endp

sizedata proc near5 —

;Similar al anterior: detennina el tamaño del dato según el bit O de AL: y lo;coloca en el opcode.

;Entrada: AL su bit O es w; BP dato; ES:OT apunta a] lugar del opcode donde debe ir el dato5

;SaIida: AX es alterado; DT es ajustado; CX incrementado según los datos

Page 426: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II - EKSAMBLAJVSM H-271

me extest al, 3 ;w^mov ax,bpjnz dosdata ;sistosb ;nojmp short fsdata

dosdata :inc exstosw

fsdata; retnsizedata endp

modrm proc near

;Este procedimiento analiza el pseudocódigo de modo de direccionamiento y;genera datos necesarios para ]a compilación.

3

;Entrada: DS:SI debe apuntar al pseudocódigo de modo de dir.

Salida: AHBLBHDXCLCHCT

prefijo de redefinición, de haberío., o O

- hOOOOOOw; h-vaJidez de wdesplazamiento, de haberlo; si no, es alterado

incrementado en 1 si no hay error-Oset si hay error, en cuyo caso Jos registros

quedan inalterados

5

pushpushpushpushpushpush]odsbdectestjnzca]J

Jc

cmpjbjecmpjamovjmp

bytptr: mov

bxexdxsibpax

sial,0e0bmrmnomnetipoerrmodrmal,3cherrmodnTíbytpíral,3eherrmodrmdh,81h

short elptrdh580h

;mnemo?;no

;BYTE?

;WORD o DWORD?

;marcar word

;m arcar byte

Page 427: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA-ASM Hf-273

pop bppop sipop dxpop expop bxstcretn

modnn endp

modregrm proc near

;Este procedimiento genera datos necesarios para el ensamblado de instrucciones;que Tienen dos operadores (como ADD), dados los pseudocódigos generados en e];primerpaso de compilación.i

;Entrada: DS:SI debe apuntar a los pseudocódigos de Jos operadores.

ALAHBLDXCXCY

;SaIJda: AL - OOOOOOdwprefijo de .redefinición, de haberlo, o Obyfe de modo de dirección amientodesplazamiento de haberlo, si no; es alteradoincrementado en 1 si no hay errorset si hay error, en cuyo caso los registros quedan

; inalterados3 " " "

push axpush expush dxpush si.push bppush bxJodsbdec siand al,0e0hcmp al,20h ;reg?jne mrrnoregcali tipocalJ modrmje ernnrrcali arreglaje emnrror a\2 ;d=ljmp short bienmrr

mrrnoreg:cali modrmje crrmrrmov bp,dx

Page 428: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EHSAMBLA-ASM H-275

errarr: stcretn

modregnn endp

modrmdata proc near

;Similar al anterior, cuando el segundo operador es un dato inmediato. Produce^resultados diferentes si el primer operador es un acumulador.5

;Entrada: AL = xxCODxxx; DS;SI debe apuntar a los pseudocódigos de jos operadores

; Salida: ALAHBLDXBPCX

ALBPCX

- OOOOOOswprefijo de redefmición, de haberlo, o-mdOOOr/mORCODdesplazamiento, de haberlo, si no, esdataincrementado en 1 si no hay error

o:- OOOOQlOwdatainalterado

0

alterado

CY set si hay error, en cuyo caso los registros quedaninalterados

pushpushpushpushpushpushmovlodsbdecmovandcmpjnetestjnzlodsbmovcalicmpjbje

exdxsibpbxaxch,al

siah,alal;20h ;reg?a1,20hnoacah,7noac

bl,altipodi, 4 ;dato?errmrdmrdok

Page 429: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - ENSAMBLAJE!H - 276

testjnzcmp

j»mrdok: mov

movandshrshrshrormovpopmovaddpop

POP

relnnoac: mov

calijemovmovmovcalicmpjbjneor

nosext; test

jztesl:jnzcmpjnecmpjajmp

mrdnoesp:andorcmpjneor

mrdmok: xchgmovand

bl,8mrdokax3255errmrdbp,axa],b]al, 8a1,laUíi!5lat,4bl,alaxalbisp,6dxex

al,chmodrmerrmrdch,alal, dibp,axtipodl,4 ;derrmrdnosextbh,2 ;sbh,80hmrdnoespbh,lmrdmokdi, 5mrdmokax,255errmrdshort mrdmok

bh,2bh,80hdi, 5mrdmokbh,l

bp,axdl,alch}38h

;sign exTend; s=l¡definido size?

Page 430: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAJE! H-277

ormovandaddmovpopmovxoraddcíeretn

errmrd: poppoppopPOP

poppopstcretn

modrmdata

bl,cha!5bhal,3sp,2ch,blbxbl,ch

ch,chsp,8

axbxbpsidxcx

endp

delplr proc near

;El mnemotécnico PTR es innecesario en todos los casos. Si DS:SI apunta;al pseudocódigo de este mnemotécnico, este procedimiento lo salta y deja;a ST apuntando al siguiente pseudocódigo; en otro caso, no hace nada.3

noptr:siplr:

delptr

pushpushpushpushmovcalijeorjnzcmpJe

movpop

Poppoppopretn.endp

axbxdxbpbp,si

tiponoptrdi, di.noptral,3bhsiptrsi,bpbpdxbxax

jmnerno?

;PTR?

Page 431: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMEIAASai

jmpsh? proc near

H - 278

¿Este procedimiento determina si la distancia entre AX y DI esta entre¿+.127 y -128, en cuyo caso pone esta distancia en AX y CY = 0; de lo;conlTario3 CY = 1.

^sub ax,di.cmp ax3127jg notshrtcmp aXj-128j1 notshrtcíeretn

noíshit:stcretn

jmpsh? endp

enspaso2 proc near3 -

;Este procedimiento ejecuta el segundo paso de compilación, es decÍTj la•traducción de los pseudocódigos a un código verdadero.3¿Entrada: DS:SI apunta al pseudocódigo; ES:DI apunta al lugar donde se desea el código3

¿Salida: DS:ST es alterado; ES:DÍ es ajustado; CX longitud del código; CY set si hay error, en cuyo caso los registros; quedan inalterados3

pushpushpushpushpushpushpushxor

starlp2;calljeorjnztestjzcmpje

axbxdxbpsidiex

cx,cxtipoer2dl,dlprsrg?ah,]noeslona!50d4hdosb

¿longitud inicial = 0¿determinar tipo de pseudocódigo inicial

;es una instrucción?¿no, puede ser sreg¿es un íoner?

¿no¿es AAM?

¿si

Page 432: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMHULASM H - 279

cmp al,0d5h ;es AAD?jne unb ;no

dosb: mov ah,0ah ;es AAM o AAD, instrucciones cuyo opcode esstosw ;de 2 bytesadd cx,2 ;incrementar longitud en 2jmp bienpaso2

unb: stosbinc exjmp bienpaso2

prsrg?; cmp dl,2 ;sreg?jne er2 ;no, errorshl aJ,lshl al,]shl al,lor a!326h ¡hallar el prefijostosbinc exjmp bienpaso2

er2: jmp errp2

n oeslon ;cmp al, 70hjb nojcondcmp aljTfhja nojcond

saltorel: ;stosbcalijecmpjbdec

;es un salto condicional?

tipoer2

er2ax

¡lo siguiente es data?;no, error

caD jmpsh? ¡calcular distancia relativaje er2 ;y determinar si el salto es posiblestosbadd cx52jmp bienpaso2

;LOOP o .TCXZ?

;LEA?

nojcond; cmpjb nolpjcxcmp a!50e3hjbe saltorel

nolpjcx:cmp al,8dh.jne diflea

regmemdisp:stosbcali modregrmje er2

¡hallar el código de los argumentos

Page 433: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBr.AJ\SM: H - 2SO

cmp al, 3jne er2cali pref?mov al,blstosbcali sizedisp.inc ex

bp2; jmp bienpaso2diflea: cmp al,0c4h

jb noldslescmp a],0c5hjbe regmemdisp

;d y w deben ser 1

;byte de modo de direccionamiento

;LDSoLES?

noklsles:cmp al,0fl)hcmp al,(ffi)h ¡prefijo REP o LOCK?jb alterablescmp al,OBhja alterablesstosb ;si, incluir el prefijoinc exlodsbcmp al,0f£hje bp2dec sijmp startp2 ¡empezar otra vez con lo que sigue al prefijo

alterables:testjnzjmp

sioner: testjz

nojc: cmp

non: cmpjamovlodsbdecmovandcmp

movcalije

ah,2sionernoonerah,4nojcjmpocallal,0c2hnoriretointa!,7nopushpopdb,al

sibl,albl,0e0hbl,20hppregal,dhmodrmppnomem

;oner?

;JMP o CAUL?

;es oner.;si no es .RET o INTT

;PUSH o POP?;no

;reg

;no5 mem?;no

Page 434: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II - ENSAMBIJLASM H - 281

cmp bri,80hje er2acmp al, 7mov aís8:Sxje espoplmov a]sOfíh

espopl: stosbinc excali pref?cmp a],8fhje espop2or bl,30h

espop2: mov al;blstosbcaJJ sizedíspjmp bienpaso2

er2a: jmp errp2

ppnomem :call tipocmp d],0je er2acmp dl54jae er2ashJ al,lshl al, 1shi aUor al, 7crnp dhj7je espop4and al,0feh

espop4: stosbinc exjmp bienpaso2

ppreg: test a!58jz er2aand alj7or al,58hcmp dh,7je espop3and aj,0f7h

espop3: stosbinc exjmp bienpaso2

nopushpop:cmp a!348h

;si, ñ^l?;no; error;POP?

;si3 dejar su código;no, código de PUSH

^OP?

;no} compensar bytt de direcc,

;es sreg

;reg de .16 bits?;no3 error

;dejar solo Jos tres LSBits;poner header del byte

;ÍNC o DEC?

Page 435: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ETTSAMBLA-ASM H-282

jamovlodsbdecandcmp

movcal]

noin edec-án, al

sialjOegha!528hincdecregal»ahmodrm

;reg^stro de .16 bits?

orxchgstosbcal]cmp

oresincl:mov

síosbcaliinc

bh,80her2abh,0fehbh,al

pref?bh,40besinclbl,8aj,bl

sizedispex

jmp bienpaso2

incdecreg;lodsband al, 7or a!3ahstosbinc exjmp bienpaso2

noincdec:cali modrmje er2atest bh,80hjz er2bor bh,0f6bxchg aí5bh.stosbinc exmov al,bhand al, 7shl al,lshl al,],shl al,]

;debe especificarse size

¡guardar código

;INC?

¡aislar registro

;esNOToKEGoetc.

;debe especificarse el size

;guardar código

Page 436: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMHLAASM j_j _ 283

or al3bl ¡obtener byte de dir. completostosbcali sizedispjmp bienpaso2

er2b: jmp errp2retoint:cmp al}0cch ;TNT?

jne esret ;nocali tipo ;sicmp di,4- ;lo siguiente es un dato?jb er2bcmp ax,255ja er2binc excmp al,3 ;INT 3?je esint3mov ah,al ;no, dos bytesmov al,0cdhstoswinc exjmp bienpaso2

esintS: mov al,0cch ;si} un butestosb

bienpaso2

esret; inc ex.mov b1,al ¡preservar códigocali tipojnc conoff ;si no hay un fin, con offsetmov a],bjinc al ;opcode adecuadostosb

bp2a: jmp bienpaso2conoff: cmp dl,4

jb er2b ;error si lo siguiente no es un datojne retvvo ;si e] dato es wordmov ah,almov al,blstoswinc excmp aí,0c2h ;RETN?je bp2axor al,al ;no, un byte masstosbinc exjmp bienpaso2

relwo: cmp bl,0c2h ;RETN?je peque?

Page 437: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAASM H - 285

jmpesfar: movlatalista:

calicalijecmp

short latalista

delpírtipoejdl,2

cmp dl,ljne cualargtest al, 8jz ej

cualarg:cmp d1,4jae jdatjmp jnodat

jdat: push dxpush axcali tipoje jclat8ol<5cmp di, 4

jdat32axdxerrj

jdat32: mov bx,axpop axpop dxcmp dh,lje errjcmp dh,2je errjxchg a19chstosbxchg ch,alxchg ax,bxstoswmov ax,bxstoswadd c!35jmp shortjbien

poppopjmp

;sreg?

;reg?

;de!6bits?pío, error

;datos?

;s

;dos datos?

;dato de 32 bits

;short?

piear?

;solo en este caso, el código es inalterado

poppopcmpjecmp

axdxdh,3errjdh,2

;far?

;near?

Page 438: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBLA-ASM H - 286

jnearcmpJe

cmpjnesubcalijnedecjmp

jnear: subsub

yaresta:movcmpjeinc

escalll :xchgstosbaddxchgstoswJmP

jsh?; cmpjnesubsuborjzcmpjne

jshort: movmovstoswincinc

jbien: xorjmp

errj: xorjmp

jnodat; cmpjneorjnemovmov

dri5.ljsh?chjOeah ump?jnearax,2jmpsh? jcalcular distanciajsíiortaxshortyarestaax,3ax,dibl,0e8hch;9ah ;caU?escalllb]bl,al

cí,3a1,bl

short jbienchjOeah ymp?errj ;solo se admite SHORT en JMPax52ax,diab,ahjsbortah?0ííherrj

ab,alal,0ebh

elel

ch5chbienpaso2ch,cherrp2

dl,l ;reg?noregl6dh,dh pío debe haber restricciones de BYTE PTR, etcerrjb1,alal,0ííh.

Page 439: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA-ASM H - 287

stosbincmovandorcmpJeorjmp

esjmpreg:or

íjcl: stosbincjmp

noregl,6:cmpjesubmovpushpushcalimovmovincincPOPjetesl

jztest

jznoesps: cmp

jneor

nojfar: movstosbinccalicmpjeorjmp

esjmpmem:or

fjm: movstosbcali

5

elal,blal,7al,0c0hch,0eahesjmpregal, 3 Ohshort fjd

al,20h

elshortjbiendh,lerrjsi, 4al,dhbpexmodrmbp,spch.Cbp+.l]spspbpenjbhs80hnoespsbh53errja1,3nojfarbl,8a],0£Eh

elpref?ch,0eahesjmpmemb1,l,0hshort fjm

bl}20hal,bl

sizedisp

opeo de = FF

;aislar número;mod = .1.1.ymp?

del registro

;es rnem, short es inadmisible

¡restaurar pseudocódigo

¿especificado size?;no, \vord por defaulr

;word?

;far?

;m arcar FAR;opcode

yrnp?

Page 440: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - EKSAMBIAASM H-288

jrnp shortjbien

nooner: cmpjaemovcalijeorstosbcalimovstosbcaliincjmp

er2h: jmpconinmed:

cali

Jc

testjzorstosbcaliincjmp

sinacc: orstosbcalixcbgstosbcalimovshrxorcaliincjmp

mayque40h:cmpjnecalijeandorstosbinc

al,40hmayque40hbh5almodregrmconinmedal,bh

pref?al,bl

sizedispexbienpaso2enp2

modrmdataer2halj4 joperación con acumulador?sinacc ;noa1,bh

sizedataexbienpas<?231,801

pref?bl}al

sizedispal,b1al,].al,lsizedataexbienpaso2

a!384h ;TEST?noestestmodregrmtdat?al,].al,84h ;generar código

ex

Page 441: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLAASM H - 289

calimovstosbcal]J^P

tdal?; xorcalijetestjnzorstosbinccal]movmovstosbcal]movcalijmp

taccd: andorstosbinccalijmp

noestest:cmpjnecalijeorjzcmp

Je

cmpjaecmpjesubjmp

xreg: testjnzdecjmp

pref?a1,bl

sizedispbienpaso2al, almodrmdataer2fal,4taccdal,0féh

expref?bh,alal,bl

sizedispal,bhsizedatabienpaso2a1,lai,0a8h

exsizedatabienpaso2

al,86b ;XCHG?noesxchgtipoer2fdi, di ;mnemo?er2f ;si, errordl,2 ;sreg?er2f ;si, errord1,4 ;datos?er2f ;si, errordi,] ;reg?xregsi, 4 -noshortxmergal, 8 ;regde 16 bits?xr.1.6si ;noshortxmerg

Page 442: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE X - ENSAMHIAASM H-290

xr!6: movcali

Jc

orjzcmpjecmpjecmp

Je

subjmp

er2f: jmpx2reg: test

j^cmpjecmpjesubjmp

rgenab: movrgenal: and

orsíosbincjmp

xmerg: calijeorstosbinccalimovstosbcalijmp

noesxchg:cmpjejmp

ah,altipoer2fdl,dler2fdl,2er2fdl,4er2fdl,lx2regsi, 5short xmergerrp2a!38er2fah,8rgenalal, 8rgenah

;e1 segundo operando tampoco;puede ser mnemo, sreg ni datos

;reg?

;no

;segundo reg. de 3 6 bits?;no, error por incompatibilidad;primer reg. acumulador?

;no5 y el segundo?

si,2 ;no; ninguno es acumuladorshort xmer£alsabal, 7al^Oh

exbienpaso2

modregrmer2fal^Sóh.

expref?al^bl

sizedispbienpaso2

al,88hsiesmovnoesmov

s

;MOV?

; Lo siguiente es el procesamiento de MOV, que es bastante complejo-siesmov:push si

cali tipoje er2f

Page 443: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - ENSAMBLA-ASMH-291

orjnzpop

J"iP

dl,dlmnomnesi

mesmemmnomne; cmp dl,l

jejmp

msireg: testjnzcal]cmpjnetestjzshlshlshl.movandxorjnzmov

macany: shrshrshrorstosbinccalipopjmp

mnoac: popcalijejmp

noel; lodsbandmovcalijecmpJe

cmpjbcmpjnetest

msiregmnoregal, 7mnoacmodrmbl,6mnoacbh,80hmacanybh,lbh,lbh,ldl,alal, 8al,bher2ea!3dlal,lal,lal,!al50a0h

exsizedispaxbienpaso2simodregrmnoelmeas oí

al, 15bl,altipoer2edl,2m2sregdi, 4er2edi, 5m2bytebl,8

;mnemo?

;reg?

;si, acumulador?

;seg. oper. [disp]?

;size especificado?

;sizes contradictorios?;si, error

;volver a obtener el reg

;seg, oper. sreg?

;segT oper. dato?

;de word?

;si, compatible?

Page 444: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE H - ENSAMBLA-ASM tí-292

jzm2byte; mov

movorstosbincmovshrshrshrcalijmp

m2sreg: testjzmovmovstosbíncmovshlsh!shlandororstosbincjmp

er2e: jmpmnoreg: cmp

jnepopmovcali

Jc

cmpjecmpjeorjnzcmpjbcmpjacalicali

er2ebpsax

al,blal,0b0h

exa],bla],lal,].aUsizedatabienpaso2b!,8er2ebh,ala!58ch

exal,bhal,].al,]a],lb1,7a1,blal.OcOh

exbienpaso2enp2dl,2

mnosregdxdh5altipoer2edl,.lm2rd!53m2mdí,dler2edl,3dher2edl,3eher2edelptrtipa

;preservar dato;caso 3

;priiner operador compatible?

;generar byte de direccionamiento

;primer oper. sreg?

;restanrar stack

;segiirjdo oper, reg?

;seg. oper, mem?

;seg. oper mnemo?

:WO.RDoDWORD?

Page 445: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFHIÍDICE H - ENSAMBLA-ASM H - 293

m2m:

m2r:

cmpjne

movmovstosbinccalicalimovsbJshl.sblorsíosbmovcali

J™Ptestjzmov

movstosbincmovshlshlsblandor

dl,3er2ebp,ax

al,8eh.

exgetprefpref?al,dhal, 3.al, 3.al, 3.al,bl

dx,bpsizedispbienpaso2al, 8

er2edl,alal,8eh

exal,dhal, 1al, 3,al,],

di, 7a!3dl

jdespues meen.?

or al,QcGh jgenerar byle de direccionamientostosbinc exjmp bienpaso2

mnosreg:pop sicmp di, 3jne er2d

;mem?;no3 no mas opciones

mesmem: push sicali

jemovcalicmpJecmpjnetestjnz

modrmerrmbp,cíxtipod!52m2srdl,3,m1r>02aljmtry.12

;seg. oper. sreg?

;seg, oper, reg?

;si, es acumulador con [dispj?

Page 446: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEPTDICE H - ENSAMBLAJE! H - 295

inccaí!movstosbcali

J*"Pmtry2: xor

cali

Jc

test

jnzorstosbincmovcalimovstosbcalimovcalijmp

• _^_ ___— — Hin* — — — — — j_> |j y

noesmovicmpjnecalicmpjbcmpjamovsbrsbrsbrorstosbincmovcalijecaliandshlsblshlor

expref?a1,b1

sizedispbienpaso2al, almodrmdataer2daUer2d ;solo se admite una de las formasal,0c6b

exbb,alpref?al,bl

sizedispal^bhsizedatabienpaso2

al,0d8h ;ESC?noesesctipodl.4 ;el primer operador debe ser un datoer2dax,3fh ;de 6 bitser2dah,alal,lal,lal,!al,0d8b

exal}abínodmier2cpref?al, 7al,lal,!a1,laLbl

Page 447: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - H-297

errs:er2c:

xorjmp

esinout:cmp

iconr:

esout:

jecalicmpjnetestjnzshrshrshrormovcalicmpjecmpjbcmp

Ja

movmovstoswincincjmpcmpjnemovorstosbinc

jmpcal]cmpjecmpjbcmpjamovcalicmpjnetest

ch,cherrp2

a^Oeííh ;OUT?esouttipo ;no, INd1,Jer2ca!57errp2al,lal,la1,lal,0e4hbl,altipodl,liconrdl,4en-p2ax,255errp2ah,alal,b1

exexshortbienpaso2al, 10 ;DX?errp2al,blal, 8

exshortbienpaso2tipodl,loconrdl,4errp2ax,255errp2ah,altipodl,lerrp2al, 7

Page 448: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEENDICE H - ENSAMBLAASS.! v. ,„„

jnz errp2shr aljlshr al,lshr al,lor aljOeiShstoswinc exinc exjmp short bienpaso2

oconr: cmp a1,lO ;OX?jne errp2cali tipocmp dl,ljne errp2testjneshrshrshrorstosbinc

al, 7errp2al,la1,lal,Jal,0eeh

exshort bienpíiso2

errp2: pop expop dipop sistcjmp short finp2

bienpaso2:add sp,6cíe

.iinp2: pop bppop dxpop bxpop axreta

enspaso2 enclp

public assem

assem proc near

;Este es el ensamblador, que llama a los pasos 1 y 2 de compilación.

¿Entrada: DS:Sr apunta al string por compilarse

Page 449: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K - XNSAMBLA-ASU H-299

; JiS;DI apunta al lugar donde se desea el código3

;SaIida: DS:SI es alterado; ES:DT es alterado; CX longitud del código; CY set si hay error5

pushpushpushcidmovmovmovcal]jemovpoppoppopcaliretn

assem endperror: pop

poppopretn

esdiax

ax,dses,axdi, offset transitenspasolerrorsi, offset transitaxcliesenspaso2

axdies

end

Page 450: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K-MEMORIA.ASM: j_¡ _

MODULO MEMORIA.ASM

.model small

.486

ÁREA PARA CÓDIGO

.code

public Uenarllenar proc near

¡Este procedimiento llena un bloque de memoria con un valor de byte¡determinado.¡Entrada: ES:DI apunta al inicio del bloque; CX contiene el tamaño de] bloque; AL contiene el valor por ponerse en el bloque

cidpush expush. clirep stosbpop dipop exretn

llenar endp

public buscarbuscar proc near

^¡Este procedimiento busca un string en un bloque de memoria.¡Entrada: ES:DI apunta al inicio del bloque; CX máximo número de bytes que deben ser explorados; DS:SI apunta ni string por buscarse; BX longitud del stringí¡Salida: ES:DI apunta al string que se encontró, o aí final del bloque; si no se lo encontró; CX >0 si se encontró, O si no se encontró

Page 451: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-MEMORIA-ASM11-301

cidBuscaStr:

pusbpushpushmovrepepoppoppopjeincdecjnz

FinSrchrretnbuscar endp

exsidicx,bxcmpsbdisiex

FinSrchdiexBuscaStr

public copiarcopiar proc near

;Este procedimiento copia un bloque de un lugar a otro en la memoria.jEntrada: DS:SI apunta a] inicio del bloque por copiarse; ES:"DT apunta al inicio del destino; CX numero de bytes por copiar

pushpushpushcmpjejacidrepjmp

sidiexdi, sifincopiarinvcopiar

movsbshortfmcopiar

invcopiar;add SL,CXadd di, exdec sidec distdrep movsbcid

fíncopianpop expop dipop siretn

copiar endpend

Page 452: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APETíDICE H-MEMORIA-ASM ,, _

PROCEDBVJIEINÍTO CjflXLD4S6.ASM

dosseg.model large ;small

ÁREA PARA CÓDIGO

.code

;Este es un overlay que la permite a un programa bajar de nivel haciendo EXEC;de este programa, tras haber instalado un handler de 63H que traslada el¡control al programa con la función 80h.

start; mov ax,8080hint <S3h

rnov ah,4ch ;nunca llega aquí, esto es solo por si seint 2]h jejecuta este programa sin e] handler de Jaend start ;intem.ipcion 21h instalado,end

Page 453: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-USTMACLASM 11 - 303

MAGROS INIMACASM

Macros usados en el archivo INTCIAL.ASM

:Macro Panimetros Función.

;actuar salta a una de las dir. en una tabla;ayuda dir,nlin,color presenta ventana con instrucciones;bufcJa pnclave,pbuf encuentra Ja posición de un buffer;curs x pone un "cursor" en x,24¡explica pnclave muestra Ja explica cion(PNCL A VE);getkey recibe dato del teclado (BIOS);getnmac da el # deí macro con nombre en NOMBUF;getxpr obtiene ultimo nibble <>0 en BUFFER;guarpantalla guarda una pantallajiluminaop resalta la opción actualp'nbuff dir recibe síríng desde teclado (BJQS);indmac da una lista de los macros en el índice;]mppnt limpia la pantalla;menaba cursor abajo en ventana de subopc.;menarr cursor arriba;mender cursor a la derecha;menizq cursor a Ja izquierda;menulinea pnclave n^ues1ramenu(PNCLA^^E);menuvent muestra menú en forma de ventana¡mostrar pdir,plin,pcol muestra pregunta y espera respuesta;movbuf pbufl ,pbu€> PBUF.1 <- PBUF2;nocurs x pone atributo normal en x}24;nunivel pbuf,pniv,pnum ponePNUM en PBUF(PNTV);opcion? espera que se elija una opción;pchar car escribe CAR (DOS);pmenu pnlin,pcolor muestra menú síring apuntado por AX;posdir pvarx,pvar}',dir convierte pos. de pantalla en dirección;restpantalla restaura ultima pantalla salvada;rutina pasa control a] usuario y lo recibe;salvareg push a todo;staíusf muestra fase del programa;statusv muestra datos importante del usuario;traereg pop a todo;valida? ve si una opción es del memí del usuario

Page 454: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AFEKDICE H - 304

;subrut subrutinas de todos los macros

.******

;Busca el AL-esimo elemento de la tabla de direcciones;que ira después de MTABLA para saltar a. esa dirección.actuar macro

local mtablabxbx¡ offset mtablamact

pushmovcalipopjmp dworcl ptr diract

mtabla:endm

.****** AYUDA ***************

^Escribe NLIN lineas separadas por ceros desde DIR en COLOR.;Ocupa columnas I. a 78 y las filas del centro de la pantalla,ayuda macro dir}nlin, color

push axexcl,nlinch, colorax, offset dirmay

pushmovmovmovcalipoppopendm

exax

.****** TJXJFCLA ***************;Busca PBUF en TABBUF y pone su ubicación en PNCLAVEbufcla macro pnclave,pbuf

push sipush axmov si, offset pbufcali mbcmov al,mbcbyTemov pnclave,alpop axpop siendm

-****** QTJRS ***************

;pone el atributo de (Xj24) en inverso.curs macro x

push ax

Page 455: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-INIMACJkSM i , _

endm

.******;Recibe desde el teclado el buffer DIR, cuya longitud se indica en¡el primer byte del buffer. En el segundo byte se obtendrá el¡numero de bytes recibidos. Solo se aceptan letras o números.¡Para edición, solo Backspace. Pita sí se ha llegado al limite.inbuff macro dtr

push simov si,offsetdircali mibpop siendm

.****** TJvJ^QJyf^Q ***************

;IJena la lista LJSMAC en base al índice de macros;en AREAMAC. Reemplaza los ceros por espacios (20H).indmac macro

cali mimendm

.****** T IviPPNT ***************

¡Bórrala pantallaImppnt macro

push dipush expush axmov ex, 2000mov di, Omov ax,Q720hrep stoswpop axpop expop diendm

**** ]vrF"NÍAn" ***************

¡Mueve cursor abajo en la ventana de subopciones.rnenarr macro

cali mmabendm

.****** ]y0n.^j"ii\j*j^ ** *************

¡Similar a MENABA.menaba macro

cali mmaendm

Page 456: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-OTttlACASM

.****** MENDliR ***************¿Mueve cursor de opción actual a ]a derecha.mender inacro

cali mmdendm

.#****# JVIENJZO ***************

¡Similar a MENDER.menizq macro

cail mmiendm

THRA *************

¡Muestra menú (PNCLAVE)menulinea macro pnclave

piísh exmov el, pnclavecali mmlpop exendm.

******* ]\/rj7]\TQyTil\rj' **************

¡Muestra menu(NCLAVE]) en forma de ventana.menuvent macro

cali mmvendm

* ****** MOSTRAR ***************

¡Muestra pregunta apuntada, por PDIR y espera respuesta. La pregunta;debe tener esta forma: Mensaje,Q,# de respuestas, lista de¡respuestas. En AL sale el numero de la respuesta elegida.mostrar macro pdir,plin5pcol

push axmov ahjplinmov aljpcolmov moslin,ahmov moscol5aímov ax, offset pdircali mmospop axmov aljinnmosendm

***************¡Mueve PBUF1 aPBXJF2.movbuf macro pbuf2,pbufl.

push si

Page 457: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H - nmiAOASM . . ., ,, 0ti - ó\)3

disi, offset pbufldi, offset pbuf2mmbdisi

MQCLIRS ***************;pone el atributo de (x,24) en normal.nocurs macro x

axal,xah,bnnormmcuax

pushmovmovcalipopendm

***************

;Pone PNUM en el buffer PBUF en el nivelnunível macro pbuf,pnjv,pnum

push expush dxmov d,pnivmov ch,pnummov dx, offset pbufcali mnnpop dxpop exendrn

OPCIÓN? ***************¡Espera que se digite una opción. Saca en MOPACT el numero de;opcíon. Las opciones son: FIechas,E]\JTiR3/1OIAJC)/xL}/vP y otros.¡Ademas es aquí donde se almacenan los datos al grabar macros;y se leen del macro en vez deí Teclado al correr o probarlos.opción? macro

cali mopendm

PQJ-T/\}? ** ** ******** ***

¡Usa .función del DOS para escribir CAR. en pantalla.pchar macro car

push dxmov d1,carcali mpchpop dx

Page 458: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-UnMAOASM; ir -,,,«

endm

pJviENU ***************¡Muestra menú apuntado por AX. Al salir MPMPRX;da la dirección del primer byte luego del 0.pmenu macro pnlin,pcolor

push expush dxmov c^pntinmov clh,pcolorcalJ mpmpop dxpop exendm

PQSDTR ***************

;Da la dirección PDIR correspondiente a (PVARX,PVARY);para acceso directo a la memoria de video.posdir macro pvarx,pvaiy3pdir

push axpush bxpush exmov cl,pvarymov bl,pvarxcali mpdmov bx,mpddirmov pdir,bxpop expop bxpop axendm.

;Trae de PANBUF la ventana que fue salvada en GUARPANTALLA.restpanlalla míicro

cali mrpcali .funcionesendm

RUTINA ***************;Pone la dirección de la nitina(NCLAVE) de usuario en DTRSAL y la dejregreso en IVlRAUX2yív[RAUX3. Pasa control al usuario, que debe regresar;poniemlo RETORNO al fin de su rutina para regresar a MRUTl.rutina macro

mov conclavemov al,ninfbufmuí el

Page 459: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-3KIMACJISM H-310

addaddmovmovmov.movmovmovmov.movmovmovmovjmp

mrurl: movcmpjemovmovmov

rnrut2:endm

ax3 offset tabirtfax,4si,axbx,[si]al,[si+2]tiprut,almraux.1.,albp, offset dirsalds:[bp],bxds;[bp+2]5csbx, offset mrutlmraux23csmraux3,bxdword ptr dirsalaljíiprut"aljinrauxlmnit2contmcr,0f&ix,ly»o

¡busco dir. de rutina(nclave)

jytipo de rutina.¡Preparo el salto.

¡guardo tipo de rutina.

¡Preparo dir. de regreso.

¡Control al usuario.¡Regreso a FLUJO.

¡Ha cambiado TIPRUT?

¡si, cod. de error de macros,¡ademas X,Y previos pueden¡estar errados.

.****** SAT VARFGr **************

¡Push a todo,salvareg macro

push eaxpush ebxpush ecxpush edxpush esppush ebppush esipush edipush dspush espush ssendm

.****** STATUSF ***************¡Presenta 6 bytes apuntados por FASEPTR en (73,23)¡Se usa para indicar la fase actual del programa,stafusf macro

cali msfendm

.****** STATUSV ***************

Page 460: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-IBIMAC.ASM: H-3U

;Presenta 6 bytes apuntados por VALPTR en (73,24);Se usa para mostrar importantes datos del usuario.statusv macro

cali msvendm

.****** TRAEREGr ***************

;Pop a todo.traereg macro

pop sspop espop dspop edipop esipop ebppop esppop edxpop ecxpop ebxpop eaxendm

.****** VALIDA? ***************;Si en OPCIÓN? se dígito una opción distinta de las que manejajnormalmente, ACTUAR manda el flujo acá para ver si es una opción;puesta por el usuario en el menú. Si es asi, AL-numero de opción.;Si el primer byte después de la ultima opción del menú es FF se;supone que la ultima es la "opción de escape" para todas las;posibilidades que no consten en el menú.valida? macro

cal] mv?movendm.

SUBRUT *********;Este es un macro que contiene todas las subrutinas llamadas por los;otros macros de este archivo. Se hizo de esta manera para evitar el;uso de demasiadas banderas, y que su ausencia no produzca "Phase;errors" al momento del ensamblado.subrut macro

rnact:salvaregdec al ;pongo el AL-esimo elemento de lamov cl,2 ;tabla en DIRACT y CS en DIRACT+2muí el ;para hacer el JMP al regresar.add ax,bx

Page 461: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-IKEVIAC-ASir H-312

movpushmovmovpopmovmovtraeregretn

bpjQffsetdiractsisi,axbx,cs:[si]sids:[bp],bxds:[bp-t-2],cs

may:pushpushmovmovsi ibshrdecmovdecmovmov

dxbx

¡centro el Texto en pantalla:;linea inicial" (23-#lineas)/2 -1

dl,23dl,cldl,ldimaylin,dlmaylinmaycoljChax3offsef blanco

mayl: pmenu maylin,maycol ;primero una linea en blanco.inc maylinmov mpmprx,bx

may2: mov ax,mpmprx ¡Ahora el resto de lineas. MPMPRXpmenu may]in,maycol ;da la dirección del primer byTeinc maylin ¡después del 0.dec eljnz may2mov aXj offset blancopmenu maylin,maycol ;Linea en blanco al final.pop bxpop dxretn

mbc:

mbcO:

mbc]

salvaregmov aljTimaxbuf ¡Busca un buffer en la rabia TABBUFcmp al}0 ;y entrega el numero clavejne mbcO ¡que servirá para obtener toda lajmp mbc4 ¡informaciónnecesaria acerca délamov mbcmemijO ¡opción representada por el buffer.

mov mbcbuf,si ¡Si el buffer no existe, clave^FF.mov rnbcpos, offset tabbufmov mbcbyte,0mov bx,mbcbuf

Page 462: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H- INIMACJVSMH-3 I3

mbc3;

mbc2:

mbc4:mbc5:

movincmovxormovincmovcmpjnzcmpjnzmovjmpincraovcmp

Je

addjmpmovmov

traeregretn

ah,[bx]bxbp,mbcposch,chcl,mbcbylembcbyledi,cxah,ds:[bp+di]mbc2mbcbyle, 8mbc3aI3mbcmenumbc5mbcmenuah,nmaxbufah,mbcmenumbc4mbcpos,8mbclaI,Qrfhmbcbyte3al.

mcu:salvareg ;Pone el alributo dado por AH enposdir 0,24,mcudir ;la posición (AL,24)mov síjincudir

bh,ahcl,2elS¡,Í1X

sies:[si],bh

movmovmu]addincmovtraeregreín

mex:salvareg ;Busca en TABINF la dirección de lamov al,ninfbuf ^explicación y la pone en linea 23-muí eladd ax,offset tabinfmov bx,axmov ax,[bx]pmenii 2traeregretn

Page 463: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-TTÍIMAC-ASM H-314

mgk:saívareg ;Uso función del BIOS que espera

repetir:mov ah,0bhint 2.1hcinp al, Oje verraton

siguiente:mov ah}G ;que se pulse una tecla.int 16hjmp short finmgk

verraton:cali pantallacmp bx,Qffhje repetir

finmgk:cmp ax'jSbOOhjne noflmov vent,]

non:mov getword,axtraeregret

mgn:salvareg

mgn.l ;

mgn2;

pushpushpopmovinccmp

jemovaddmovmovmuíaddincmovrepejneaddmovjmpmov

esdsesclh,0ffh

dhdh}8mgn2si, offsetsi, 2di, offsetal, 8dhdi,axdicx,7cmpsbmgn]dh,80h

nummacmgn 4dh,0fíh

;Busca si el nombre en. NOMBUF esta;en la lista de macros y da su numero;-t-8Gh en NXJMMAC sí asi ocurre. Si es;nuevo, da el # del primero libre.

;Si ya no hay espacio} da FF.

nombuf;bytes 0 y 1 son de uso de otro macro.

areamac

;byte 0 es la longitud del macro.

; comparo.;si no es iguíil, comparo otro.;macro viejo.

,dh

;Busco primero libre.

Page 464: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE K-TKTMAtLASW H-3 I5

mgn21: inc dhcmp dh,8je mgn3mov di, offset aremnacmov al, 8muí dbadd di,axmov al,0mov ex, 8repe scasbjne mgn.21mov nummac,dh ;macro nuevo.jmp mgn4

mgn3: mov nummac,01íh ;macro nuevo sin sitio.mgn4: pop es

traeregretn

mgx:saivareg ;se divide NIVEL/2, se suma a direcciónmov cl,nivel ;inicial de BUFFER, y se obtiene el msnsbr cl,l ; distinto de 0 en ese byte.sor ch,cb ;Ese es el ultimo nibbleOOmov si, offset bufferadd si, exmov al, [si]mov ah,ajsbr ab, 1shr ab,1sbr ab,lsbr ab}lcmp ah,0jz mgxlmov al,ab

mgxl : mov xprev,altraeregretn

en BUFFER

mgp:saivareg ;paso pantalla a PANBUF.xormovmovmovmovmovrep

si, sidi, offset panbufbx,dsesjbxds,videosegcx,3680

movsbtraereg

Page 465: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICEtí-316

di, siesdscJ,a]

retn

mió;salvaregmov emov dl,collactmov a],x

miol3: posdir l,l,miodirmov si,TTiiodirmovpush

popmov

mio.131.: lodswcmp al,20hje mío] 31sub si, 2dec eljz mi o.16

mío] 4: lodswcmp a!320hjne

mío 15: lodswcmp

jedecdecdecjnz

mio.16: movlodswmovcmpJecmpjesloswjmp

mió! 4

mi o. 15sisielmió 14di,si

ah,dlal,20hmio.1 7al, Omió] 7

miol6mió] 7; traereg

reín

¡Resalta la opción actual, dada porX.

;collact=video inverso

¡trabajo directo en pantalla.;busco la X-esima palabra en la

¡linea 23 y cambio su aíributo.

mib:

;saUo espacios iniciales.

jsalto palabras.

;resalto palabra.

salvareg ¡obtengo string desde teclado.mov el,[si] ¡máximo # de caracteresmov ch,0 ¡contadormov dXjSi ;puntero auxiliaradd sí,2 ;bytes O y 1 de uso del macro

Page 466: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE It-IHIMAdASMH-317

posdir l,24jmibdirmov bx,mibdir

¡dirección de primer carácter

mibl:

mib2:

mib21

mib22

mib3:

mibSl

mib4:

mib4.1

mov mibXjChinc mibxcurs mibxgetkeycmp al,08hjne mib21jmp mib4

: cmp al,0dhjne mib22jmp mib5

:: cmp al,30hjb mib2cmp at,7bhjnb mib2cmp al,3ahjb mib3cmp al}41hjb mib2cmp al,5bhjb mib3cmp a1,61hjb mib2sub al}20hnocurs mibxcmp chjdjne mibSlpchar 07hjmp mibl

; mov [si], alinc simov es:[bx],aladd bx,2inc chjmp miblnocurs mibxcmp ch,0jne mib41pchar 07hjmp mibl

: dec simov byte ptr[si]sub bx,2mov byte ptr es:dec chjmp mibl

¡Bactíspace?

;Enter?

;<"0"?

;>"z"?

;es un numero?

;"9"<aK"A"?

;es una mayúscula?

;"Z"<aK"a"?

;es minúscula, hacer mayúscula

; contador^m aximo?

;si, beep.

;AL al buffer¡apunto prox. dirección

;AL a pantalla¡apunto prox. dirección

;contador+l

;bufíer vacio?

;si5 beep.

¡borro ultimo carácter30 ¡en el buffer

¡y en pantalla:[bx],20h¡contador-1

Page 467: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

AEEKDICE II-INIMA.C-ASWFT-318

mib5: nocurs mibxmov si,dxinc simov [síjjChtraeregretn

mim:salvaregpush espush dspop esmov si, offsetmov di, offsetmov 011,8

miml: inc simov alj20hstosbmov cls7

mim2: lodsbcmp al,0jne mim3mov al.>2eh

mim3 : stosbdec eljnz mim2dec dijnz mimlpop estraeregretn

mmab:salvareg

\fm de rutina; byte 1jindica # de bytes recibidos.

;pone la lista de macros actual;en LISMAC. Reemplaza los 00 con;2E (puntos).

areamaclismac

mov conclave!. ;Busca el # de subopciones que tienemov al}ninfbuf ;el menú de la opción actual dada pormuí eladd ax5offsetinc axinc axpush bxmov bx,axmov si,[bx]pop bx

mmabl: lodsbcmp al,0jne mmabl

jNCLAVEl. Si Y supera ese #, Y=0.tabinf

Page 468: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-INIMAC-ASMH - 319

al,ninfbufelax, offset tabínfaxaxbxbx,axsí,[bx]bx

;Busca # de subopc. de menu(NCLAVEl);Si Y=FF, Y igual a ese #.

lodííbinc alinc ycmp al,yjne Ttunab2mov y, O

mmab2: traeregretn

inma:salvaregmov cl,nclavelmovmuí.addincincpushmovmovPOP

mmal: lodsbcmp al, Ojne mmallodsbdec ycmp y,0fflijne mma2mov y, al

mrna2: traeregretn

mmd:salvaregmov conclave ;Busca O- de opciones de menú actualmov aljiíinfbuf ;Si X supera ese valor, X~l.

el ;SiempreY=0.ax,offset tabinfaxaxbx

bx,axsi,[bx]bx

muíaddincincpushmovmovPOP

mmdl: lodsbcmp a 1,0jne mmdllodsbinc al

Page 469: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APENUICE II-IN1MAOAXMH-320

IT1C

cmpjnemov

mmd2; movtraere

X

al,xmmd2

;a la derecha.

mmi;retn

salvaregmov conclavemov aUninfbuf

# de opciones d.e menú, actual.;S¡ X=Q, X igual a ese #. Siempre Y=0.

mmil :

muíaddincincpushmovmovpoplodsb

cmp

elax,offsaxaxbxbx^nxsi,[bx]bx

al»0jne mmil

mm¡2;

lodsbdeccmpjnemovmov

traeregretn

X

x,0mmi2xv»ly,o

. tabinf

roml:

meincmovmov

pushpu.shmov

otra letra;lodsbcmpjnelodsb

salvaregmov al.ninfbuf ;Muestra el menu(CL) y resalta lamu] el ;opcíon actual.add, ax,offset tabinf

axax

sax

otraletra

Page 470: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE ri - INIMACASM H - 321

movpoppoppmenu 1iluminaop

traeresretn

Tiumeroop,alaxsi

mmv:salvaregmov c],nclave1mov al»nmfbufmu! elad.d. aXjOffset tabinf

;Muestra ventana se subopc.;primero veo si Ja opción;tiene algu.n submenu,

;Si es asi, la rutina;debe ser de tipo 3.

addmovcmp

ax,6bx,axbyteptr[bx]»3mmv3

jmp inrnv?mmv3; mov conclave

mov al sninfbufmuí eladdincincpushmovmov

;Ahora busco la dirección;del menú al que pertenece

;esta opción en TABINF,ax'jOffset tabinfaxaxbxbx,axsi,[bx]bx01,0dl,x

movmov

mmv30: lodsbinc elcmp alje mmv30cmp x,ljr\z mmv3 1d.ec elmovjmp

mmv31: dec .mmv32; lodsb

inc elcmp al,20hjne mmv32

mmv33: lodsbinc el

;ST apunta al inicio del menú.;Voy a contar los bytes hasta;la opción actual (x) para saber;cohimna inicial de ventana.;Salto espacios iniciales

;pero los cuento.

;si x=l ya tengo la columna

mmv4d.l ;DU cuantas opc mas debo sa.ltar.

;Cuento bytes hasta encontrar;un espacio (CL contador).

;sumo espacios entre opciones

Page 471: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II-UsTMACASMH-322

cmp als20hje mmv33clec dijnz mmv32dec elmov mmvx.ljCl

mmv4: IHOV m m vea r,0mov conclave!movmu.1addincincpushmovmovpoppush

a1,ninfbufelax,offset tabinfaxaxbxbx,axsi,[bx]bxsi

mm\'40: lodsbcmp al>20hje mmv4Qdec simov cx,l

mmv41; lodsbcmp a.l>2Qhjx mmv42cmp al,0jne mmv410mov mmvlin(cljmp mmv5

mmv410: inc chcmp ch,mmvcarjb mmv41mov mmvca^chjmp mmv41

mrnv42: lodsbcmp al ,2 Ohje mmv42cmpjnemov

;ima opc menos que saltar

¡Termino. Ventana empieza en¡columna anterior.

;Ahora busco dirección de menú¡asociado a la opción actual

;en TABtNF

jmpmmv43; inc

movdecjmp

mmv5: pop

al,0mmv43mmvlin,clmrnv5el

ch,0simmv41si

;Sí apunta a primer byte;de ese menn

;no tomo en cuenta los¡espacios iniciales.

;Veo cuantas filas y columnas;ocupa la ventana;tos espacios no cuentan

¡termina si AL=0

;# de su.bopciones d.e! menú.

;CH: # de car de subopcion;MMYCA:R; máximo CH logrado

¡saltar espacios

¡termina si AL=0

;# de su.bopciones del menú

¡Otra subopcion¡# de car = 0

Page 472: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE TI - liSTMACASM11 - 323

mov aijirnnvlininc alinc ai

mov ahjadd. ah,al

mov mmvlin^hmov mmvlin1,ahinc mmvcar

;Busco la linea inicial¡de la ventana incluidas;dos lineas de recuadro.

¡servirá después

posdir rnmvx.l,rnmvlin>mmvdir ;d.ir. de esquina superiormov dijinmvdirmov es,videoseg

al>esqüahjCoiven

movmovStoswmov al.linsupmov cljirnnvcar

ch,chst'oswal^esqid

¡izquierda en pantalla

¡dibujar esa esquina¡en color de ventana

¡dibuja linea superior

xorrep

movstosw

mmv50; DBC mmvlinmov blsmmv1in

cmp bl,2je mmv6posdir inmvxl^nmvlin^nmvd.ir ;escribir las su.bopcionesmov dijinmvdir

;pero antes el recuadro,;longde la linea

;dibuja esq. sup, der.

¡próxima línea

¡linea inferior si BL=22

mov aljinlatmov blsmmvcarstosw

mmv5Q1: lodsbcmp al,20hje mmv501dec si

mmv51: lodsbstoswdec blcmp a!,2Qhje mmv52cmp a 1,0jne mmv51dec didec dimov al,20hstosw

mmv52; cmp bl>0je mmv53mov al,20h

;no tomo en cuenta los¡espacios iniciales

¡leo byt'e del menú¡lo escribo en p

¡H"e terminado la opción?

¡He terminado el menú?

¡en e,se caso borro el OOK¡que escribí

; y pongo un " "

¡lleno el resto de la linea¡con espacios

Page 473: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APENIMCE H-INl.MAOASM

mmv52l; stoswdec bljnz mmv521

mmv53; mov al}lin!at ¡y termino con recuadro.stosw

mmv54; lodsb ¡salto espacioscmp al,2Qbjz mmv54dec sijmp mmv50

mmv6: posdir mm\'xl)mmvlin)mmvd.ir ¡dibuja linea inferiormov di5mmvdir

mov a!,esqsimov ahscolvenstoswmov aljinsupmov cl.,mmvcarxor ch,chrep 3tosw

mov al,esqsd.stosw ¡Fin de dibujo de ventana,cmp y,0 ¡existe subopcion seleccionada?jz mmv? ¡no, termina trabajo.

mov al,y ¡si, resaltaría cambiandommv63: mov b^mmvlinl ¡el atributo de la linea.

sub bl,almov mmvlin.,bLposdir mmvxljmmvHn^nmvdir

mov di5mmvdirmov ax.,3add di^axmov bl,mmvcarmov al^colact

mmv64; stosbinc didec bljnz mmv64

mmv7; traeregreín

mmos:salvaregpmenu moslin,moscol ¡Presenta pregunta y espera respuesta.mov si,ax

mmosO: lodsbcmp a 1,0jne mmosOmov mdirop-.si

Page 474: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

H - INIMACAS.M H - 325

mmosl: lodsbmov cl,almov dl,aígetkeycmp alj'a1

je mmosl icmp al/z'-Hjnc mmosl 1sub afs20h

mmosl 1: mov bx,axmmos2; mov ai,[si]

inc sisub cl»lje mmos4cmp al>0je mmosS

mmosS; cmp a!,bljne mmos2jmp mmosS

mmos4: mov si^nd.iropjmp mmQsl

mmos5; sub dl,clmov mnmos,djtraeregretn

mmb;saivaregpush dspop esmov c(\:,8rep movsbtraeregretn

;Qbter>go el # de opciones.

¡obtengo respuesta.¿minúsculas --> mayúsculas.

;comparo y si no es ninguna de las;posibles> vuelve a pedir respuesta.

de respuesta en MNMOS.

;mueve 3 bytes.

mnn;

movmuícmpjnzmovmovjmp

mnn4; movm n n l ; shr

saivaregtest cl,l'¡z mnnl

al,16cha^Omnn4ch.Ofhal.Offhmnnlch^al

;pongo CH en el CL-esimo nibble;del buffer apuntado por "DX,

Page 475: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APEN1JÍCE Il-IN'IMACASMI I - 326

mnn5;

mnn2;mnn3;

mop:

mopl:

mopl 0

mov bl»clxo>" bh,bhadd bx,dxcmp ch,Qjz mnn5cmp al,Qffhjnz mnn2and [bxjjCh

jmp mnn3or [bx],chtraeregretn

salvareg ¡maneja opciones.mov conclave! ;Primero veo de que tipo es lamov al,ninfbu.f ¡opción actual. (Esto es usadomuí el ¡al salir de este macro).ad.d ax.offset tabinfadd ax,6mov si,axmov al,[si]mov tipru.tl,alcmp bmac,1 ¡Corriendo/probando macra?je mopljmp mop2mov al,longmac ¡si.

inc alcmp al,contmac ¡tennino?jne moplOmov bmac,0 ¡si,mov faseptr^offset fnorm ;Pase normalstatusfjmp mop2: mov si}ofTsetbufFmac ¡estoy en macro,push ax ¡leo dato de BUFFMACmov aljContmacxor ah,ahadd ax.axadd si,axpop axmov bx,[si]inc contmaccmp contmcr,0ffh ;fin de ejecución porje mopl 2 ¡flujo ambiguo?cmp bver,0 ¡probando macro?je moplS

Page 476: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE ÍT-ENIA1ACASMH-327

bver>QbN,Offl)Oh

mopll: getkeycmp íü,crje moplScmp a!,ctrlkjne mopll

mop!2; movmovmovmovstatus P

mopl3; movjmp mop3

mop2; getkeycmp bgmac.Ojnejmp

mop21; movcmpjecmpjemovxoraddaddmovinccmpjeJmP

mop23: movd.ecmov

¡si, espero ya sea¡ENTER para seguir

;o AK para terminar,

¡termino prueba,

¡no ejecuto ultima opciónfaseptTjOfTset fhorm ;fase normal

nx.hx

mop21mop3bx,0ff00hcontmcr,0ffhmop22al>ctrlkmop22bljContmacbh,bh

¡tomo el valor del birffer¡en ve?, del teclado,

¡no es macro,dato d.e teclado.¡grabando macro?

¡si, fín macro por razones de¡rutina de macros de usuario?

¡si,1ermino de grabar?

¡grabo dato en 8UFFMAC

bx,offset bulTmacds;[bx],axcontmaccontmac,maxmacmop23mop3

contmacax,offseí blanco

pmenu 24,colexpmov ax,offset escmcrpmenu 23,coSlact

mop231: getkeymov ax,get\vordcmp al,l bhjne

mop22; movmovmu!

;y cuento # de datos. "No eje-¡cuto la, primera en exceso.

¡excedí el limite.

í)l,nu.mmaccl,8el

add a^offset areamacpush espusn dspop es

;ESC?

¡paso datos al área d.e macros.

Page 477: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al'KNDICE II - IMMACLA-SMH-328

mov di,axmov al,contmacmov [di]>a1inc dímov si,ofTset nombmac.mov cxs7rep movsbmov al,nummacmovm u.ladd

;long. del macro,

;y nombre

;ahora paso BUFKMAC;al área que empieza

el ;con MAC1. Cada macroax%offse1 macl ;ocupa 2*MAXMAC bytes

movmov

;o MAXMAC wordssisoffset buffmac

;ejecuto la ultima opción;es un car.especial?

;nos es Enter?

mov cx,maxmacrep inovswpop esmov bgmac,0 ¡termina grabaciónmov faseptr.oFfsetfnorm ;fase normal.stafusfmov ax,bx

mop3; gmp al,0je mop32

mopSI: cmp al^crjne mop311mov als5jmp mop4

mop311; Qmp aljCtrlo ;es A0?jne mop312mov fl'57jmp mgp4

mop312;cmp alsctrlp ;esAP?jne mop313mov alsSjmp mop4

mop313; cmp al,ctrlk ;es AFC?jne mop314mov al ,9jmp mop4

mop314: cmp aí j ibh ;es ESC?jne mop315mov al, 10jmp mop4

I ;es otro?

;es <-

mop315: TTIQVmov al>6jmp mop4

mop32; cmp an5fleizqjne mop321

Page 478: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE II - INIMACAS.M

mov a 1,1jrnp mop4

rnop321; cmp ah,f¡ederjne mop322mov al>2jmp mop4

mop322; cmp ah^flearrjne mop323mov al>3jmp mop4

mop323: cmp aheleabajne mop324mov alj4jmp mop4

mop324; mov mopauxl^ahmov mopaux,Qmov al ,6

mop4; mov mopact,alcmp bopcjjne mop5resí pantalla

mop5; traeregretn

U - 329

;es -->?

;es flecha arriba?

;es flecha abajo?

;es otro.

;tengo ventana de opciones?

;si,recupero pantalla.

mpch:

mpm:

salvaregmov ah,2inl 21htraeregretn

salvaregpush dxxor cK,chmov s¡,axmov ayonglinm ul elmov essvideosegmov di,axpop dxmov ah,dbpush dimov al,20hmov ex, 80rep stoswpop di

;Uso rutina del DOS para escribir DL.

;pone un stringterminad.o en O:en línea C¡- con atributo DH,;EL string es apuntado por AX.

;borro la linea.

Page 479: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE U - INLMACASM ,, ,-„

ínc diinc dí

mpmO; lodsb ;pongo el string,cmp al,Oje mpm 1Stoswjmp mpmO

mpml: mov mpmprx^si ;MPMPRX apunta a próximo string,traeregretn

mpd.:salvaregmov als160 ;Direccion-W160 + BL.muí elxor bh,bhadd ax,bxad.d. ax,bxmov mpddir,íixtraeregretn

.mrp:salvareg ;Paso PANBÜF a pantalla.xor di,dimov es,videOsSegmov sisofísel panbuf1TÍOV c(Vj36SOrep movsbtraeregretn

msf:salvaregmov si/aseptr ;FASEPTR tiene la dirección de unposdir 73)24>msfdir ;string de 6 byles q\ie debe sermov di,msfd.ir pnostrado en la posición (73,24).mov cx56mov ahjCollact

msfl; lodsbstos\dec exjnz msfltraeregretn

msv:saivareg

mov s¡,valptr ;VALPTR tiene la dirección de un string

Page 480: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE 11 - IN1A1ACAS.M

posdir 67)24,msrd.ir ;de 6 bytes en el que el usuario puedemov di>msfd.ír ;poner algo para aparecer en (67,24),mov c(x,6mov a

msvl: lodsbstoswdec exjnx msvltraeregretn

H-331

mv?;salvaregmov conclavemov aljnínfbur"muí eladd ax,offset tabinfinc axínc axpush bxmov bx}axmov si,[bx]pop bx

mv?l; lodsbcmp al,Qjne mv?llodsbmov cl,almov dl,alpush sípush ax.mov nwVauxl,xor ah5ahad.d s¡,axcmp bytejne mv? l lmov mv?au,x!(al

mv?ll; pop a-xpop simov al,mopauxcmp al^'a'jb mv?2cmp aI5'2T

ja mv?2sub alj20h

my?2: mov bl,almv?21; lodsb

;Busca si la elección esta;en el menú del usuario.

;ST apunta al menú

;SÍ apunta a primera opción;AL tiene el # de opciones

;si el primer byte después;de las opciones validas

;es FF5 entonces evacuar;las teclas no validas

;porla "ultima opción,

;dejo MV7AXJX1 como bandera

;A, las minúsculas

;las hago mayúsculas.

Page 481: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

ll-INIMACAS.M H - 332

cmp al,blje rnv?3d.ec eljnz mv?21cmp mv?au.x5,0je mv?22mov al,mv?auxlmov mv?aux,aJxor ah,ahjmp mv?4

mv?22: or al,fjmp mv?4

mv?3; dec elsub d!,c1mov mvVauXjd.lxor ah}ah

: traeregretn

;veo s¡ opción es valida

;no fu.e valida, veo si hay¿rutina de escape

;sí hay esa rutina;salgocon respuesta

;no ha,y esa

;opcion valida,;guardo respuesta

;y salgo con ZF=

endm

Page 482: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-MI-RO-ASM H - 333

¡MACRO MPRO.ASM

;Mücro Parámetros Función

; actuar;í?ni;n.acr9;getchfir;getdata x,ysburl>tipo;getd.ata2 x,y,l;geílinebulT;limpln num}atrib;1 m ppnt;prínf x,;rest23;salva23;usrpro;sbrpro

salía a, la, AT,-e,sirn3, dir. de ana, tabJa,teríPÍiíñ macro y d?. un. mensajelee un ASCHleerjn bin5 hex o declee un dato en hex (para mamona relativa)lee un string del tecladoborra una linea

borra pantallapone u,n texto en pantalla

restaura, línea 23salva linea 23intercambia pantallas de usuario y PROsubru.tinas de los otros macro

.***************************************b;Macro-instruccíones para macro-comandos.***************************************

;Macro Parámetros Función.

;cerrmcr;creamcr d,¡mom;grabmcr;getkey;inirncr dirnom;lmpmcr;rtodo;stodo;sbrmcr

cierra archivo de macroscrea archivo de macrosgraba y cierra archivo de macroslee teclado o bu/fer de magrosabre y lee (o crea) archivo de macrospone O en las áreas de macros

pop todopush todosubnrtmas de los otros macros

.*****# ACTUAR ***************

¡Lee e¡ AC-esimo elemento de la tabla TABACT y salta a la dirección;dada por ese elemento. ALK) para el primer elemento de la tabla,actuar macro

local tabactpush simov ah,0

Page 483: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

APÉNDICE H-Ml-HO-ASMH- 334

aclcl ax,axmov si,offset tabactadd si,axmov ax,cs:[si]pop sijmp ax

tabact:end.m

.##**** "FI.NMACRQ **************;Da un mensaje de fin de macro y espera un ESC para seguirfinmacro macro

cali rfínmendm

.****** ("¡FTCHAR ***************

;Lee en GCASCU un ASCÍT del teclado o butTer de magros. En GCCQD;sale el siguiente código; O, hay dato valido en GCASCTT. 1, ENTER. 2,;TAB, 3, SHIFT TAB, 4S ESC. 5, alguna función o tecla especial» cuyo;ASCIT extendido sale en GCASCCT. Para que ENTER, TAB, SHTFT TAB y;ESC sean aceptados como datos normales, se debe presionar antes F1 0.getchar macro

cali rgchend.m

.****** npTDATA ***************

;Lee datos del teclado o bu.ffer de macros en BUFF. En BUFF se tiene;;# de bytes pedidos» # de datos leídos, datos, # convertido en hex;(4 bytes). Hace eco en pantalla en (X,Y). De acuerdo al TÍPO;recibe datos en bin (V), "hex ('h')s dec ('d'Xl-íi longitud dejBUPF debe ser adecuada: bin, cualquiera; hex, 2 0 4 bytes; dec, 3;o 5 bytes. Si se presiona DEL o BS se borra el ultimo dato ingresado.;B]SJTER es esperado para confirmar un dato y convertirlo en hex. En;GCCOD sale un código si ocurre lo siguiente: O, hay un dato correcto a!;fínal de'BUFF. ls flecha arriba. 2,-flecha abajo, 3, flecha derecha,;4, flecha izquierda. 5, TAB. 6, SHTFT TAB. 7, ESC. 8, PGUP. 9 PGON.;Cualquier otro dato es procesado para ver si es valido incluirlo en el;bu.Ffer. Se produce un 3EEP sí un dato es invalido o ai llegar a. los;1 imites. Si al ingreso a la subnrlina GDRESET es T , buffer y variables;son inicial izadas. Si es O, no lo son, y se puede seguir recibiendo;el mismo dato. Los mimeros bínanos no son convertidos en hex.getd.ata macro x,y,buff,tipo

push bxpush exp;ish dxmov bx,offset buffmov cl,x

Page 484: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

Al-ENTllCE II-MPRO.ASM J-| _ 335

mov ch,ymov d'jíípocali rgdpop d.xpop expop bxendm

.*#***# GFTDATA2 ***************;Lee dalos del teclado. Bn BUPF se tiene;;# d.e bytes pedidos, # de, datos leídos, dalos, # convertido en hex;(4 bytes). Hace eco en pantalla en (X,Y), 'De acuerdo al TIPO;recibe datos en bin ('b')3 hex ('h'), dec ('d'), La longitud, de;B'UFF debe ser adecuada: bin, cualquiera; hex, 2 0 4 byles; dec> 3;o 5 bytes. Si se presiona QEL o BS se borra el ultimo dato ingresado,;ENTER. es esperado para confirmar un dato y convertirlo en hex. En;GCCQD sale un código si ocurre lo siguiente: O, hay un dato correcto al;fínal de BlJFF. 1, flecha arriba, 25 flecha abajo. 3, flecha derecha.;4, Hecha izquierda. 5, TA.B. 6, SHTFT TAB, 7, RSC. 3, PGUP. 9 PGDN.;Cualquier otro dato es procesado para ver si es valido incluirlo en el;bu,ffer. Se produce un BTOP si un dato es invalido o al llegara los;lirnites. Si al ingreso a la subnitina GDR-BSET es 1, buffery variables;son inicial ¡xadas. Si es O, no lo son, y se puede seguir recibiendo;el mismo dato. Los números binarios no son convertidos en hex,getdata2 macro x^bu.r^tipo

push bxpush expush dxmov bx,offsetbu.ffmov cl^xmov ch,ymov dl.tipojmp rgdj ;suced,e ajgo extranio si se lo hace con cali

virus: pop dx ;en el retorno no regresa acá (se cuelga)pop expop bxendm

.####** fipyr TÍSTP ***************;Lee del teclado un buffer 3UFF (ASCH)} que tiene este formato: Numero;de bytes pedidos, numero de bytes realmente ingresados, texto. Para;edicion se acepta 13ackspace o Qelete. BNTBR para terminar el texto.;Bn GCCOD sale un código: 1, se digüo BNTER. (buffer valido), 2, TAB.;3, SHTFT TAB. 4, ESC y 5, especial, l^e macro usa GBTCKAR para;recibir datos. Bn X^ Y recibe la posición en que debe hacer eco.getÜne macro x,y,bufT

push sipush ex

Page 485: ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA …bibdigital.epn.edu.ec/bitstream/15000/5218/4/T11405.pdf · 2019-04-08 · G-2 APÉNDICE G posición ans db dq O O milmiUon

í.l¡pU3

is <JodXE dod

•i ,i'l I • t'MA4J.VLJ | j ti U

^LífU ií A.ÜU.Í

-l!p -ÍSSjjO'lS AOU1

3fB LfSrtC!

is isnd

_IULJC!'O un uos jtíüíuiísi sqsp opc^ ¡a 'ai'yiV oinqujtó u<35 (A*X)-3p jií-iKd ti etj^ued ííj us >[j£¡ jod ope^uncíe OP-ÍS.) ¡s óquosgí

*******

ui'pusxo dodíp dodXB dod

O* l "*i

xs qsndíp qsnd

XA . fOii/-!O VÍÍM1XJ

0-íotíai lu»•>» i V** 1 1 »>/"! «» ti i itíj Ib|-v»tíL« til tiJLj

r-,i *******

XE dodr i i f i Ví>»

IlJ ü0"« I .t IV*< 1 11 A f\l >VJUJ.b Utí /lUlAI

AOÍXIqsud

oaatíui u[duitjsuod

*********>(:***** c ******

tupugjs dod

xo dod

jjnq j3sjjoeis AOLUACL[5 A O Ul

X * 3 AOLU

9££ ~ H? c fc ri