天天看點

南郵微機接口彙編實驗1南郵彙程式設計式實驗

南郵彙程式設計式實驗

更改程式,使其正常運作

更改後的代碼:
;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南郵彙程式設計式實驗

繼續閱讀