Upload
ivan-quispe
View
234
Download
0
Embed Size (px)
DESCRIPTION
examen de assemblre
Citation preview
NOMBRE: mmmmmmmmmmmFECHA: 08/05/14
POTENCIAS DE DOS USANDO SOLO SUMAS HASTA LA POTENCIA 16La lógica que se sigue es que debemos obtener:1 2 4 8 16 32 64 .......................... 32768 65536y si tenemos un dato a que iniciamos en 1 entonces
1+1 2+2 4+4 8+8 16+16 32+32 ......................... 32768+32768vemos que la potencia deseamos obtener es la el doble del anterior en otras palabras sumamos dos veces la anterior potencia
SOLUCIONinclude libgen.asm.model small.stack 256.dataa dw 1cad db 3 dup("$")resultado db 55,0,54 dup("$")nro dw 0base 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 cadlea si,[cad+2]call cad_realentermov cx,nrofor:
mov bx,aadd bx,bxmov a,bx
loop formov ax,alea si,resultadocall real_cadmostrar_cad resultado
final;Procedimiento para llevar una cadena a un número realcad_real Proc Nearsal_reg MOV AX,0000h MOV nro,AX
XOR BX,BX while: MOV BL,byte PTR [SI] MOV AX,nro
CMP BL,13JE fin
SUB BL,30h MUL base ADD AX,BX MOV nro,AX INC SI JMP whilefin: res_reg RETcad_real EndP
;procedimiento para llevar un numero real a una cadenareal_cad Proc Nearsal_regXOR CX,CXwhile1: CMP AX,0 JE fin1 XOR DX,DX DIV base PUSH DX INC CXJMP 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 RETreal_cad EndPend
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 MACROMOV AX,@DATAMOV DS,AXENDM
FINAL MACROMOV AH,4CHINT 21HENDM
MOSTRAR_CAD MACRO CAD PUSH AX PUSH DX MOV AH,09H
LEA DX,CAD INT 21H POP DX POP AXENDM
LEER_CAD MACRO CADENA PUSH DX PUSH AX MOV AH,0AH
LEA DX,CADENA INT 21H POP AX POP DXENDM
SAL_REG MACRO PUSH AX PUSH BX
PUSH CXPUSH DXPUSH SIPUSH DI
ENDM
RES_REG MACRO POP DI POP SI POP DX POP CX
POP BX
POP AXENDM
ENTER MACRO PUSH AX PUSH DX MOV DL,13
MOV AH,02INT 21HMOV DL,10INT 21HPOP DXPOP AX
ENDM