1

私は自分のクラスのためにいくつかのことに取り組んでいますが、進行を妨げる問題に悩まされています。

以下のコードの 10 行目、14 行目、16 行目で、それぞれの値をコメントの状態に出力する必要があります。現在、私はtestPrint少し低い関数を使用して、およびまたは、、、の値AXBX出力AHALます。私の問題は、10 行目の値を印刷しようとして、同じ関数を使用して 14 行目の値を印刷しようとすると、14 行目の値が台無しになり、正解ではないものが表示されることです。プログラムになどの適切な機能をすべて実行させ、最後に一度印刷すると、完全に機能します。BHBLADDMUL

また、試し印刷機能を同時に使おうとすると数字が乱れるのでどちらかしか使えません。

8088 アセンブラを使用しています。

各印刷関数を呼び出した後、何か不足していますか? 正しい方向に向かうために私が何をする必要があるかを誰か教えてくれませんか?

どうもありがとうございます!

This is the code:

_EXIT = 1       ! 1
_PRINTF = 127       ! 2
.SECT .TEXT         ! 3
    start:          ! 4 
MOV AX, 514         ! 5 AX = 514
MOV BX, 2       ! 6 BX = 2

firstOutput:        ! 7output original values of AX and BX
PUSH BX         ! 8
PUSH AX         ! 9
            ! 10 PRINT AX AND BX HERE (SHOULD BE 514,2)

secondOutput:           ! 11 BH = BH + BL; AH= AH - AL
ADDB BH, BL     ! 12
SUBB AH, AL     ! 13
            ! 14 PRINT AX AND BX HERE (SHOULD BE 2, 514)

thirdOutput:        ! 15 MULTIPLY AX AND BX
MUL BX          ! 16
            ! 17 PRINT AH, AL, BH, BL


!testPrint: !THIS WILL PRINT AX AND BX
!PUSH BX
!PUSH AX
!PUSH print
!PUSH _PRINTF
!SYS

testprintall: ! THIS WILL PRINT AH, AL, BH, BL
MOV CX, 0           ! 
MOVB CL, BL         ! 
PUSH CX             ! 
MOVB CL, BH         ! 
PUSH CX             ! 
MOVB CL, AL         ! 
PUSH CX             ! 
MOVB CL, AH         ! 
PUSH CX             ! 
PUSH printahalbhbl  ! 
PUSH _PRINTF        ! 
SYS !

exit:                   ! Exit 
PUSH 0              ! 
PUSH _EXIT          ! 
SYS                 !

 .SECT .DATA            ! 
 print:                 ! 
 .ASCIZ "AX:%d, BX:%d\n" !  
 .SECT .BSS                 ! 

 printahalbhbl:             ! 
 .ASCIZ "AH:%d, AL:%d, BH:%d, BL:%d\n" !
 .SECT .BSS                 !
4

1 に答える 1