南郵彙程式設計式實驗
更改程式,使其正常運作
更改後的代碼:
;FILENAME: EXA131.ASM
;.486
DATA SEGMENT ; DATA SEGMENT為段定義語句,段名為DATA,USE16單元有效位址為16位,16位尋址方式
SUM DW ? ;變量名為SUM,定義2個位元組變量
MESG DB '25+9=' ;變量名為MESG,定義位元組變量
DB 0,0,'$'
N1 DB 9 ;,F0H
N2 DB 25
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA ;段約定語句,
BEG: MOV AX,DATA ;設定DS初值
MOV DS,AX
MOV BX,OFFSET SUM ;bx基址寄存器暫存SUM的相對于資料段DS的偏移位址
MOV AH,N1
MOV AL,N2
ADD AH,AL
MOV [BX],AH ;25+9的和存入SUM
CALL CHANG
MOV AH,9 ;DOS功能調用09H号顯示字元串
MOV DX,OFFSET MESG ;入口參數DX=字元串首位址,字元串必須以‘$’為結束标志
INT 21H
CHANG PROC
LAST: CMP BYTE PTR [BX],10 ;[BX]基址尋址指向SUM,和10立即數的類型屬性不确定,需要PTR。即SUM和10比較,若SUM<10,則跳轉到NEXT
JC NEXT
SUB BYTE PTR [BX],10 ;SUM>10則SUM=SUM-10
INC BYTE PTR [BX+7] ;BX+7即輸出的十位數加1
JMP LAST ;JMP即JUMP無條轉移
NEXT: MOV AX,SUM ;不能直接在SUM和[BX+8]之間傳值,需要中間一個AH寄存器
ADD [BX+8],AX ; 定位到MESG DB 0,0的位置填入值,+8是後一個0
ADD BYTE PTR [BX+7],30H ; 30H是0的ASCII
ADD BYTE PTR [BX+8],30H
RET
CHANG ENDP
CODE ENDS
END BEG
程式運作結果如下
南郵微機接口彙編實驗1南郵彙程式設計式實驗