Как код вычитания в TASM

Хорошо, поэтому я основал свои коды из руководства по сборке turbo, которое у нас есть…я пытался поменять регистры, и это работало только для обратного вычитания примера 1-2= -1…теперь моя проблема в этом коде заключается в том, что когда первое число больше, чем второе, я не могу получить правильный ответ

;Subtract
.MODEL Small
.STACK 100h
.DATA
Start DB 13,10,'Subtract 2 numbers!$'
FOne DB 13,10,'Enter first set number1: $'
FTwo DB 13,10,'Enter first set number2: $'
Diff1 DB 13,10,'Difference is: $'



.CODE
mov ax,@data
mov ds,ax
mov dx,OFFSET Start
mov ah,09h
int 21h

mov dx, OFFSET FOne
mov ah,09h
int 21h
mov ah,01h
int 21h
MOV BL,AL
AND BL,0Fh

mov dx, OFFSET FTwo
mov ah,09h
int 21h
mov ah,01h
int 21h
AND AL,0Fh

 compare:
 cmp AL,BL
 jge reverse
 jnz normal




normal:
 mov ah,00h
 SUB BL,AL
 AAS
 OR AX,3030h
 MOV BX,AX

 mov dx,OFFSET Diff1
 mov ah,09h
 int 21h

 mov dl,Bh
 mov ah,02h
 int 21h
 mov dl,Al
 int 21h
 mov ah,02h
 jmp exit

reverse:
 mov ah,00h
 SUB AL,BL
 AAS
 OR AX,3030h
 MOV BX,AX

 mov dx,OFFSET Diff1
 mov ah,09h
 int 21h

 mov dl,"-"
 mov ah,02h
 int 21h
 mov dl,Bh
 mov ah,02h
 int 21h
 mov dl,Bl
 mov ah,02h
 int 21h
 jmp exit


exit:
mov ah,4ch
int 21h
END

1 ответ

  1. хорошо, так что я думаю, что я получил его 😀

    ;Subtract
    .MODEL Small
    .STACK 100h
    .DATA
    Start DB 13,10,'Subtract 2 numbers!$'
    FOne DB 13,10,'Enter first set number1: $'
    FTwo DB 13,10,'Enter first set number2: $'
    
    Diff1 DB 13,10,'Difference is: $'
    Rtry DB 13,10,'Enter new inputs?[y][n]: $'
    
    .CODE
    mov ax,@data
    mov ds,ax
    mov dx,OFFSET Start
    mov ah,09h
    int 21h
    
    mov dx, OFFSET FOne
    mov ah,09h
    int 21h
    mov ah,01h
    int 21h
    MOV BL,AL
    AND BL,0Fh
    
    mov dx, OFFSET FTwo
    mov ah,09h
    
    int 21h
    mov ah,01h
    int 21h
    MOV BH,AL
    AND AL,0Fh
    
    compare:
     cmp AL,BL
     jg reverse
     jnz normal
    
    
    normal:
     mov ah,00h
     SUB BL,BH
     MOV AL,BL
     AAS
     OR AX,3030h
     MOV BX,AX
    
     mov dx,OFFSET Diff1
     mov ah,09h
     int 21h
    
     mov dl,Bh
     mov ah,02h
     int 21h
     mov dl,Bl
     int 21h
     mov ah,02h
     jmp exit
    
    reverse:
     mov ah,00h
     SUB AL,BL
     MOV BH,AL
     AAS
     OR AX,3030h
     MOV BX,AX
    
     mov dx,OFFSET Diff1
     mov ah,09h
     int 21h
    
     mov dl,"-"
     mov ah,02h
     int 21h
     mov dl,Bh
     mov ah,02h
     int 21h
     mov dl,BL
     mov ah,02h
     int 21h
     jmp exit
    
    
    exit:
    mov ah,4ch
    int 21h
    END