Examen Da Assembler
qci27128415 de Mayo de 2015
513 Palabras (3 Páginas)210 Visitas
NOMBRE: mmmmmmmmmmm
FECHA: 08/05/14
POTENCIAS DE DOS USANDO SOLO SUMAS HASTA LA POTENCIA 16
La lógica que se sigue es que debemos obtener:
1 2 4 8 16 32 64 .......................... 32768 65536
y si tenemos un dato a que iniciamos en 1 entonces
1+1 2+2 4+4 8+8 16+16 32+32 ........................ . 32768+32768
vemos que la potencia deseamos obtener es la el doble del anterior en otras palabras sumamos dos veces la anterior potencia
SOLUCION
include libgen.asm
.model small
.stack 256
.data
a dw 1
cad db 3 dup("$")
resultado db 55,0,54 dup("$")
nro dw 0
base dw 10
; cad introducida por teclado es una cadena y lo debemos convertir en número natural
;a es dw 32 pero internamente se verá como 3h2h y debemos llevarlo a numero 30h unir 32h=30h32h
;resultado-->3h2h-->3h+30h=33h, 2h+30h=32h-->30h32h
.code
inicio
leer_cad cad
lea si,[cad+2]
call cad_real
enter
mov cx,nro
for:
mov bx,a
add bx,bx
mov a,bx
loop for
mov ax,a
lea si,resultado
call real_cad
mostrar_cad resultado
final
;Procedimiento para llevar una cadena a un número real
cad_real Proc Near
sal_reg
MOV AX,0000h
MOV nro,AX
XOR BX,BX
while:
MOV BL,byte PTR [SI]
MOV AX,nro
CMP BL,13
JE fin
SUB BL,30h
MUL base
ADD AX,BX
MOV nro,AX
INC SI
JMP while
fin:
res_reg
RET
cad_real EndP
;procedimiento para llevar un numero real a una cadena
real_cad Proc Near
sal_reg
XOR CX,CX
while1:
CMP AX,0
JE fin1
XOR DX,DX
DIV base
PUSH DX
INC CX
JMP while1
fin1:
while3:
CMP CX,0
JE fin3
POP BX
ADD BX,30h
MOV [SI],BX
DEC CX
INC SI
JMP while3
fin3:
res_reg
RET
real_cad EndP
end
Nota: Los macros INICIO, FINAL, LEER_CAD, MOSTRAR_CAD, SAL_REG y RES_REG están en otro archivo denominado libgen.asm
librería que usaremos
INICIO MACRO
MOV AX,@DATA
MOV DS,AX
ENDM
FINAL MACRO
MOV AH,4CH
INT 21H
ENDM
MOSTRAR_CAD MACRO CAD
PUSH AX
PUSH DX
MOV AH,09H
LEA DX,CAD
INT 21H
POP DX
POP AX
ENDM
LEER_CAD MACRO CADENA
PUSH DX
PUSH AX
MOV AH,0AH
LEA DX,CADENA
INT 21H
POP AX
POP DX
ENDM
SAL_REG MACRO
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
ENDM
RES_REG MACRO
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
ENDM
ENTER MACRO
PUSH AX
PUSH DX
MOV DL,13
MOV AH,02
INT 21H
MOV DL,10
INT 21H
POP DX
POP AX
ENDM
...