如何在TASM中进行逆减法?

时间:2017-01-08 10:44:05

标签: tasm

所以我们有一个TASM程序会询问用户2个8位数字。然后程序将解决差异和逆减法(但我无法在此代码中使用它)

;SUBTRACTION PROGRAM
.MODEL small
.STACK 100h
.DATA

first db 10,13,'First double-digit number: $'
second db 10,13,'Second double-digit number: $'
diff db 10,13,'Difference is: $'
retry db 10,13,'Try again (Y)?: $'


.CODE
mov ax,@data
mov ds,ax

again:
 mov ah,9
 mov dx, OFFSET first
 int 21h

mov ah,1
int 21h
mov bh,al
mov ah,1
int 21h
mov bl,al

mov ah,9
mov dx, OFFSET second
int 21h

mov ah,1
int 21h
mov ch,al
mov ah,1
int 21h
mov cl,al


and bx,0f0fh                    ;EXTRACT ASCII
and cx,0f0fh

mov ax,00h                        ;CLEAR REGISTRY

这部分首先解决了最不重要的数字

SUB bl,cl                         
mov al,bl
AAS
mov dx,ax

第二重要

SUB bh,ch                         ;subtract 2sn
mov ah,0
mov al,bh
AAS

SUB al,dh                        


or dl, 30h
or ax,3030h
mov bx,ax
mov cl,dl

mov ah,9
mov dx, offset diff
int 21h


mov ah,2
mov dl,bh
int 21h
mov ah,2
mov dl,bl
int 21h
mov ah,2
mov dl,cl
int 21h

mov ah,9
mov dx, offset retry
int 21h

mov ah,1
int 21h
cmp al, 'y'
jz again
cmp al, 'Y'
jnz done

done:
mov ah, 4ch
int 21h
END

0 个答案:

没有答案