1
我正在爲一類我的一些東西工作,我被困在一個問題,以阻止我進步。裝配8088打印AX,BX,AH,AL,BH,BL
在下面的代碼行10,14和16我需要打印出各自的值,以評論的狀態。目前我使用testPrint
功能打印出來的值爲AX
和BX
或AH
,AL
,BH
,BL
。 我的問題是,當我嘗試在第10行打印出值,並使用相同的函數打印第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 !
你用什麼彙編器?你的目標是什麼操作系統? – nrz 2013-04-28 22:32:59