PROGRAMA EN MASM
l siguiente código compila con masm. Te servirá para imprimir enteros de 2 cifras. Espero que te sea de ayuda:
.model small
.stack
.data
var1 db ?
.code
.startup
mov ah,01h;leer caracter desde el teclado
int 21h ;lee primer caracter
sub al,30h ;resto 30H (48Dec) para obtener el numero
mov var1,al ;lo guardo en variable var1
mov ah,01h ;leer caracter desde elteclado
int 21h ;leo el segundo caracter
sub al,30h ;resto 30H (48Dec) para obtener segundo valor
add al,var1 ;realizo la suma de los dos valores
;AQUI EMPIEZO YO:
xor ah, ah ;Pongo el byte de mayorpeso a cero.
mov bh, 10 ;Voy a dividir entre 10.
div bh
mov bh, ah ;Guardo el resto de la division.
cmp al, 0 ;Si el resultado es cero, estamos ante un numero de una sola cifra.
je segund ;Porlo tanto, no imprimo la primera ya que es un cero.
mov dl,al ;pongo en dl el numero a imprimir
add dl,30h ; agrego 30 (48Dec) para obtener el caracter
mov ah,02h ;funcion para imprimir uncaracter en pantalla
int 21h
;Imprimo el resto de la division:
segund:
mov dl, bh
add dl, 30h
mov ah, 02h
int 21h
.exit
end
MULTIPLICA EMU
CICLO2: CMP AL, 99 ;compara AL con 99
JG SIGUE2;si es mayor que 99 se va a la etiqueta SIGUE2
AAM
MOV U, AL
MOV D, AH
MOV AH, 02H
MOV DL, D
ADD DL, 30H
INT 21HMOV DL, D
ADD DL, 30H
INT 21H
JMP ALLA
SIGUE2: AAM
MOV U, AL
MOV AL, AH
AAM
MOV C,AH
MOV D,AL
MOV AH, 02hMOV DL , C
ADD DL, 30H
INT 21H
MOV DL, D
ADD DL, 30H
INT 21H
MOV DL, U
ADD DL, 30H
INT 21H
ALLA: MOV AH,07H
INT 21HRET
Ordenación ascendente descendente.
INCLUDE “EMU8086”
.MODEL SMALL
DATA SEGMENT
N DW Oah
Indec dw ?
Vect dw -90d, -89d, 0728d, 0old, 04d,07d,0d,010d
Ends
Code segment
Call start
Int 20 h...
Regístrate para leer el documento completo.