Ensamblador
9
- Otro problema de examen. Hallar el valor de AX tras la instrucción
mov ax,word ptr ds:[3]
;------------------------------------------------------------------------------
;Definicion del segmento de datos
;------------------------------------------------------------------------------
DATOS SEGMENT
dw 3Ah,7Bh,9Ch
db 34h,76h,65h
org 1
db 67h,31h,56h,"SE ACABO"
DATOS ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de pila
;------------------------------------------------------------------------------
PILA SEGMENT STACK "STACK"
db 40h DUP(0)
PILA ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de codigo
;------------------------------------------------------------------------------
CODE SEGMENT
assume cs:code,ds:datos,ss:pila
START PROC
;Inicializamos los registros de segmento
mov ax,datos
mov ds,ax
mov ax,pila
mov ss,ax
mov ax,word ptr ds:[3]
mov ax,4C00h ;
int 21h ;Terminar el programa
START ENDP
CODE ENDS
END START
- Muy similar al anterior:
;------------------------------------------------------------------------------
;Definicion del segmento de datos
;------------------------------------------------------------------------------
DATOS SEGMENT
dw 3Ah,7Bh,9Ch
db 34h,76h,65h
org 2
db 67h,31h,56h,"SE ACABO"
DATOS ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de pila
;------------------------------------------------------------------------------
PILA SEGMENT STACK "STACK"
db 40h DUP(0)
PILA ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de codigo
;------------------------------------------------------------------------------
CODE SEGMENT
assume cs:code,ds:datos,ss:pila
START PROC
;Inicializamos los registros de segmento
mov ax,datos
mov ds,ax
mov ax,pila
mov ss,ax
mov ax,word ptr ds:[3]
mov ax,4C00h ;
int 21h ;Terminar el programa
START ENDP
CODE ENDS
END START
- ¿Cuál es el valor de AX tras la instrucción NOP?:
; Ejercicio: examen ETCII - febrero 2002
;------------------------------------------------------------------------------
;Definicion del segmento de pila
;------------------------------------------------------------------------------
PILA SEGMENT STACK "STACK"
db 40h DUP(0)
PILA ENDS
;------------------------------------------------------------------------------
;Definicion del segmento extra
;------------------------------------------------------------------------------
EXTRA SEGMENT
RESULT DW 0,0
EXTRA ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de codigo
;------------------------------------------------------------------------------
CODE SEGMENT
assume CS:code,ES:extra,SS:pila
;------------------------------------------------------------------------------
; Procedimiento inicial
;------------------------------------------------------------------------------
START PROC
mov ax,1Fh
push ax
inc sp
push ax
dec sp
pop ax
pop ax
nop
mov ax,4C00h ;
int 21h ;Terminar el programa
START ENDP
CODE ENDS
END START
- Muy importantes también son los ejercicios de pila.
Hallar el valor de AX tras la instrucción NOP:
;------------------------------------------------------------------------------
;Definicion del segmento de pila
;------------------------------------------------------------------------------
PILA SEGMENT STACK "STACK"
db 40h DUP(0)
PILA ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de codigo
;------------------------------------------------------------------------------
CODE SEGMENT
assume cs:code,ss:pila
START PROC
;Inicializamos los registros de segmento
mov ax,pila
mov ss,ax
mov al,5
mov bx,0FA45h
push bx
push ax
mov bp,sp
mov al,[bp+3]
nop
mov ax,4C00h ;
int 21h ;Terminar el programa
START ENDP
CODE ENDS
END START
- Estos ejercicios de pilas suelen tener truco la mayoría de las
veces ;)
Hallar el valor de AX tras el último POP:
;------------------------------------------------------------------------------
;Definicion del segmento de pila
;------------------------------------------------------------------------------
PILA SEGMENT STACK "STACK"
db 40h DUP(0)
PILA ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de codigo
;------------------------------------------------------------------------------
CODE SEGMENT
assume cs:code,ss:pila
START PROC
;Inicializamos los registros de segmento
mov ax,pila
mov ss,ax
push 0F34h
push 63h
pop ax
inc sp
pop ax
mov ax,4C00h ;
int 21h ;Terminar el programa
START ENDP
CODE ENDS
END START
|
|