我正在为我的一个班级做一些事情,但我被困在一个问题上,使我无法进步。
在下面第 10、14 和 16 行的代码中,我需要将相应的值打印出注释状态。目前,我使用testPrint
稍微低一点的函数来打印出它的值 for AX
and BX
or AH
, AL
, BH
, BL
。我的问题是当我尝试在第 10 行打印出 vaules 并使用相同的函数在第 14 行打印出值时,第 14 行的值被弄乱了,并显示了一些不是正确答案的东西。当我让程序执行所有适当的功能时,如等ADD
,MUL
并在最后打印一次,它可以完美运行。
我也只能使用其中一个测试打印功能,因为如果我尝试同时使用这两个功能,数字会变得混乱。
我正在使用 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 !