1er Parcial de Assembler
-
Upload
ivan-quispe -
Category
Documents
-
view
234 -
download
0
description
Transcript of 1er Parcial de Assembler
![Page 1: 1er Parcial de Assembler](https://reader036.fdocuments.ec/reader036/viewer/2022082402/5695d1fc1a28ab9b0298b31c/html5/thumbnails/1.jpg)
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
![Page 2: 1er Parcial de Assembler](https://reader036.fdocuments.ec/reader036/viewer/2022082402/5695d1fc1a28ab9b0298b31c/html5/thumbnails/2.jpg)
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
![Page 3: 1er Parcial de Assembler](https://reader036.fdocuments.ec/reader036/viewer/2022082402/5695d1fc1a28ab9b0298b31c/html5/thumbnails/3.jpg)
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