Sesión del Jueves 1 de Septiembre
En la sesión de hoy les presenté las soluciones para los ejercicios de aplicación del conjunto de instrucciones de los procesadores Intel x86. Estas propuestas de solución son las siguentes:
Solución Problema 1Posteriormente comentamos algunos ejemplos del manejo en bajo nivel de operaciones aritméticas como las siguientes:
mov ax,1000
mov bx,40h
mov es,bx
rep1: ; Repite
dec ax
mov cx,[es:17h]
bt cx,3 ; Hasta (Bit 3 de CX = 1)
jc Fin
cmp ax,0 ; OR (AX = 0)
jne rep1
Fin:
Solución Problema 2
mov ax,1000
mov bx,40h
mov es,bx
rep1: ; Repite
dec ax
mov cx,[es:17h]
bt cx,3 ; Hasta (Bit 3 de CX = 1)
jnc rep1
cmp ax,0 ; AND (AX = 0)
je rep1
Fin:
Solución Problema 3
mov bx,40h
mov es,bx
mov bx,[es:08]
cmp bx,0 ; Si (BX = 0)
je Fin ; jmp Fin
inc bx ; Sino inc bx
m1: ; Mientras (Bit 1 de [es:bx]=1
bt [es:bx],1
jnc Fin
jmp m1 ; Fin Mientras
mov ax,1 ; AX = 1
Solución Problema 4
mov bx,0b800h
mov es,bx
mov di,0
mov al,"a"
rep1: ; repite
mov [es:di],al
add di,2
inc al
cmp al,"z" ; Hasta (AL > "z")
jle rep1
i) ax = 10Las dificultades que nos presentan estas operaciones se deben al hecho de que las operaciones que nos proponen (cx = ax * bx y ax = bx + cx + dx) son instrucciones muy adecuadas para máquinas con instrucciones de 3 direcciones, pero los procesadores Intel tienen mayormente instrucciones con 2 direcciones, por lo que uno de los operandos es a la vez operando y destino, y en los pseudocódigos anteriores tanto en la multiplicación como en la suma, el destino es distinto a los operandos. Además, se debe cumplir que los operandos a la derecha del signo "=" no deben alterarse.
bx = 15
cx = ax * bx
ii) bx = 100
cx = 452
dx = 109
ax = bx + cx + dx
1 Comments:
Thank you vary much for your comment!
Publicar un comentario
<< Home