Examen Da Assembler
Enviado por qci271284 • 15 de Mayo de 2015 • 513 Palabras (3 Páginas) • 177 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:
...