Sesión del Viernes 26 de agosto
Formato de instrucción en lenguaje ensamblador
Primero vimos rapidamente el formato de instrucción en ensamblador:
{etiqueta:} mnemónico operandos {; Comentario}
donde {etiqueta:} y {; Comentario} son opcionales.
Por ejemplo:
Programación estructurada en bajo nivel
Posteriormente presenté la manera de implementar en ensamblador las estructuras de control de flujo que se manejan en la programación estructurada:
IF (cond) THEN Inst1 ... InstN ENDIF
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
IF (cond) THEN InstV1 ... InstVN ELSE InstF1 ... InstFM ENDIF
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
Ilustramos la implementación de estas estructuras de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
Para implementar esta estructura de control les presenté la instrucción
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
Finalmente les presenté un algoritmo para calcular la raíz cuadrada aproximada de un entero positivo. Consiste en restar sucecivamente los numeros impares (1,3,5,...) al entero positivo hasta que el resultado de la resta sea menor o igual a 1. Ilusté el algoritmo con un ejemplo y les pedí que lo tradujeran a ensamblador.
Primero vimos rapidamente el formato de instrucción en ensamblador:
{etiqueta:} mnemónico operandos {; Comentario}
donde {etiqueta:} y {; Comentario} son opcionales.
Por ejemplo:
mov ax,100
do1: cmp bx,0 ; Instrucción con etiqueta (do1:) y este comentario
jne do2
add cx,ax
do2: dec ax
jmp do1
Programación estructurada en bajo nivel
Posteriormente presenté la manera de implementar en ensamblador las estructuras de control de flujo que se manejan en la programación estructurada:
- IF (cond) THEN Inst1 ... InstN ENDIF
- IF (cond) THEN InstV1 ... InstVN ELSE InstF1 ... InstFM ENDIF
- WHILE (cond) DO Inst1 ... InstN ENDWHILE
- DO Inst1 ... InstN UNTIL(cond)
DO Inst1...InstN WHILE(cond) - FOR (Contador=1 a N) Do Inst1 ... InstN ENDFOR
IF (cond) THEN Inst1 ... InstN ENDIF
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
mov ax,100En ensamblador:
if (cx > 0) then
div cx
dec cx
finif
mov ax,dx
mov ax,100
cmp cx,0 ; if (cx > 0)
jle finif
div cx ; then
dec cx
finif:
mov ax,dx
IF (cond) THEN InstV1 ... InstVN ELSE InstF1 ... InstFM ENDIF
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
mov bx,50En ensamblador:
if (ax < 10)
then
add cx,ax
inc ax
else
dec ax
finif
inc cx
mov bx,50WHILE (cond) DO Inst1 ... InstN ENDWHILE
cmp ax,10 ; if (ax < 10)
jge else
add cx,ax ; then
inc ax
jmp finif
else: ; else
dec ax
finif:
inc cx
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
En ensamblador:
mov dx,100
while (dx <> 0) do
add ax,dx
dec dx
endwhile
mov dx,ax
mov dx,100DO Inst1 ... InstN UNTIL(cond) y DO Inst1 ... InstN WHILE(cond)
m1: cmp dx,0 ; while (dx <> 0)
je endm1
add ax,dx ; do
dec dx
jmp m1
endm1: ; endwhile
mov dx,ax
Ilustramos la implementación de estas estructuras de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
mov cx,0En ensamblador:
DO
inc cx
div cx
mov bx,ax
UNTIL (AX = 0)
mov ax,dx
mov cx,0FOR (Contador=1 a N) Do Inst1 ... InstN ENDFOR
do1: inc cx ; DO
div cx
mov bx,ax
cmp ax,0 ; UNTIL (AX = 0)
jne do1
mov ax,dx
Para implementar esta estructura de control les presenté la instrucción
LOOPSu sintaxis es:
LOOP DirecciónSu semántica es:
CX = CX -1Noten que esta instrucción está ligada al registro CX.
SI (CX <> 0)
Salto a Dirección
SINO
Ejecuta la instrucción que sigue a LOOP
Ilustramos la implementación de esta estructura de control de flujo con un ejemplo. Supongamos el siguiente pseudocódigo:
mov dx,50En ensamblador:
PARA (Contador=1 a 30)
sub ax,dx
dec dx
FINPARA
mov ax,cx
mov dx,50
mov cx,30
p1: sub ax,dx ; PARA (Contador=1 a 30)
dec dx
loop p1 ; FINPARA
mov ax,cx
Finalmente les presenté un algoritmo para calcular la raíz cuadrada aproximada de un entero positivo. Consiste en restar sucecivamente los numeros impares (1,3,5,...) al entero positivo hasta que el resultado de la resta sea menor o igual a 1. Ilusté el algoritmo con un ejemplo y les pedí que lo tradujeran a ensamblador.
0 Comments:
Publicar un comentario
<< Home