0

アセンブリで減算を書き込もうとしましたが、たとえば試してみると44-12結果は36. 私のコードは次のようになります:

org 100h

start:    
mov ah, 09h 
    mov dx,  First 
    int 21h 

    mov ah, 01h 
    int 21h
    sub al,'0' 
    mov bl, 10
    mul bl

    mov [number1], al

    mov ah, 01h 
    int 21h
    sub al,'0' 


    add [number1], al

    mov ah, 09h
    mov dx,  Second 
    int 21h

    mov ah, 01h
    int 21h
    sub al,'0' 
    mov bl, 10
    mul bl

    mov [number2], al


    mov ah, 01h 
    int 21h
    sub al,'0' 

    add [number1], al



    mov bx, [number2]
    mov ax, [number1] 

    ;**************************sum*******************************************

    add ax,bx 

    mov bl, 10
    div bl

    mov ch,ah


    mov ah, 09h
    mov dx,nl
    int 21h



    add al, '0'
    mov dl, al
    mov ah,2
    int 21h

    add ch, '0'
    mov dl, ch
    mov ah, 2
    int 21h

    ; ***************************sub*************************************** 
    mov al, 0
    mov cl, 0
    mov ah, 0
    mov ch, 0
    mov bx, 0
    mov dx, 0


    mov dx, 27
    mov ax, 73



    mov bl, 0
    mov bl, 10      
    sub ax,dx


    div bl

    mov ch,ah


    mov ah, 09h
    mov dx,nl
    int 21h

    add al, '0'
    mov dl, al
    mov ah,2
    int 21h

    add ch, '0'
    mov dl, ch
    mov ah, 2
    int 21h



    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    mov ah,0   
    int 16h

    mov     ax, 4C00h 

int     21h

number1 dw 0
number2 dw 0

First db "first :",10,13,"$"
Second db 10,13,"sec :",10,13,"$"
nl db "",10,13,"$"

私がする時

mov dx, 12
mov ax, 44

結果は正しいです。一つ質問があります

1.私の変数[number1]と何が問題なのですか[number2]

4

1 に答える 1

1

number2適切に初期化していません:

mov [number2], al

mov ah, 01h 
int 21h
sub al,'0' 

add [number1], al

それadd [number1], alはする必要がありますadd [number2], al

于 2014-04-26T18:54:42.383 に答える