Salto incondicional (JMP):
La instrucción básica que transfiere el control a otro punto del programa. La sintaxis básica es :
JMP etiqueta
JMP et1 ;Indica a donde saltara et1 . . . et1: ;realiza lo que se encuentra en ella et1 MOV AX, 1
Programa 1: Salto incondicional
Código:
org 100h mov ax, 5 ; se asigna 5 en ax. mov bx, 2 ; se asigna 2 en bx. jmp calc ; va a 'calc'. back: jmp stop ; va a 'stop'. calc: add ax, bx ; suma bx y ax. jmp back ; va a la etiqueta 'back'. stop: ret ; return to operating system.
Resultado:
Salto condicional (CMP):
Hay instrucciones que realizan saltos condicionales (salta solo cuando alguna condiciones están en acción)
Programa 2: Salto condicional, Compara un número
Código:
include "emu8086.inc" org 100h mov al, 25 ; establece al a 25. modificar a 10 para probar el igual mov bl, 10 ; establece bl a 10. cmp al, bl ; compara al - bl. je equal ; salta si al = bl (zf = 1). putc 'n' ; si llega aqui, entonces al <> bl,
print 'No es igual' jmp stop ; imprime 'n', y salta a stop. equal: ; si llega aqui, putc 'y' ; entonces al = bl, imprime 'y'.print 'Es igual'stop: ret ; llega aqui no importa que.
Resultado:
Se asigna valores a los registros, compara "al" y "bl".
Al ser diferente imprime n "No es igual".
En caso de comparar valores iguales imprime lo siguiente:
Instrucción LOOP:
Programa 3: LOOP Imprime 5 veces 1233333233333233333233333233333, se usa push para decrementar
Código:
org 100h mov bx, 0 ; contador de pasos total. mov cx, 5 k1: ;add bx, 1 mov al,' ' ;guardamos un espacio en al mov ah, 0eh
int 10h
mov al, '1' ; al=1 mov ah, 0eh ;invoca el servicio de impresion video int 10h ;imprimimos push cx ;resta 1 a cx: cx=cx-1 para loop1 mov cx, 5 ;cx a 5 para loop 2 k2: ;add bx, 1 mov al, '2' ;al=2 mov ah, 0eh ;impresion de video int 10h ;imprime push cx ;decrementa -1 loop2 mov cx, 5 ;cx=5 loop3 k3: add bx, 1 ; mov al, '3' ;al=3 mov ah, 0eh ;impresion video int 10h ;imprimimos loop k3 ; internal in internal loop. pop cx ;resta 1 a cx loop3 loop k2 ; internal loop. bucle interno pop cx ;resta 1 a cx loop2 loop k1 ; external loop. bucle externo ret ;retornamos control al ordenador
Resultado:
Instrucciones de salto que prueban una sola bandera.
Saltar instrucciones para números firmados.
Saltar instrucciones para números sin firmar.
Bucle
Referencia:
https://www.youtube.com/watch?v=Ng4YEb2Jtcg
http://jbwyatt.com/253/emu/asm_tutorial_07.html
https://www.youtube.com/watch?v=llCG44dzPQM
No hay comentarios:
Publicar un comentario