Cómo utilizar el lenguaje ensamblador para realizar operaciones de suma decimal de varios dígitos
Cuando el programa se está ejecutando, te solicita que ingreses el número a. agregar y el número que se agregará Buscar Después de sumar y mostrar los resultados, la pantalla continúa y sale.
El segmento de código asume cs: código, ds: código
org 100h; formato COM estándar
inicio:
mov ax, 3 ; modo texto
int 10h
push cs
pop ds
push ds
pop es; p>
Otra vez:
lea dx, mes1; aviso
mov ah, 9
int 21h
mov di, 30fh
entrada de llamada; recibir número A
lea dx, mes2; aviso
mov ah, 9
int 21h
mov di, 31fh
Entrada de llamada; recibir número B
Conteo de llamadas
lea dx, mes3
mov ah, 9
int 21h
; *** Resultado decimal de salida***
Llamar a crt
lea dx, mes4
mov ah, 9
int 21h
mov ah, 0; pausa
int 16h
cmp ah, 15h; "Y(y)" continuar
jz De nuevo; calcular la siguiente pregunta
mov ah, 4ch; end
int 21h
entrada :
mov cx, 10
T1: mov ah, 0; recibir número
int 16h
cmp al, 0dh
p>jz ok
cmp al, '0'; verificación de datos
jb T1
cmp al, '9'
ja t1
sí:
mov ah, 0eh; muestra datos válidos
int 10h
w2: presionar hacha; para apilar
bucle T1
ok: mov bp, cx
inc bp
mov cx, 11
sub cx, bp
std
jcxz u3
u1: pop ax
stosb
bucle u1
u3: mov al, '0'
mov cx, bp
u2: stosb
bucle u2
ret
count: mov si, 30fh
mov di, 31fh
xor dx, dx clear feed
mov cx; , 11; cambie este valor para agregar números muy grandes
T3: llame a subs_c; acumule poco a poco
dec si
dec di
bucle T3
p>
bucle T3
ret
count: mov si, 30fh ret
subs_c:; [Original] Subrutina central de adición de varios bits p>
mov al, [si]; alineación del bit más bajo
mov ah, [di]
y ax, 0f0fh
add al, ah ; selfadd
agregar al, dl;
aam; bisect ten
mov dl, ah; guardar bit de redondeo
o al, 30h
mov [SI], al; guarda 1 bit y valor, copia incorrecta aquí.
ret
crt:cld
xor pb, pb
mov si, 305h
mov cx, 10
cr3:
mov al, [si] p>
cmp al,'0'
jnz cr0
inc bp
inc si
bucle cr3
cr0:
mov cx, 11
sub cx, pb
mov si, 305h
ad si, pb
cr1: lodsb
mov ah, 0eh
int 10h
bucle cr1
ret
mes1 db 0dh, 0ah, 09, 'Entrada A (0-9, 999, 999, 999): $'
mes2 db 0dh, 0ah, 09, 'Entrada B (0- 9, 999, 999, 999): $'
mes3 db 0dh, 0ah, 09, 'Suma A B= $'
mes4 db 0dh, 0ah, 09, 'Continuar Y (y)?$'
Fin del código
fin inicio