程序要求
流程圖
匯編代碼
STACK1 ENDS
DATA SEGMENT
BUF DB 30H,30H,30H,31H,32H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF ;把BUF的偏移地址存到SI中去
MOV BX,000AH
MOV CX,0004H ; cx作為循環控制計數器
MOV AH,00H
MOV AL,[SI]
SUB AL,30H
A1: IMUL BX
ADD AL,[SI+01]
SUB AL,30H
INC SI
LOOP A1
MOV [SI],AX
CALL SHOW ;調用子程序
MOV AX,4C00H
INT 21H
SHOW PROC NEAR ; 輸出到屏幕,用16進制表示
MOV AL,DS:[SI]
AND AL,0F0H
MOV CL,4
SHR AL,CL
CMP AL,0AH
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,DS:[SI]
AND AL,0FH
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
RET
SHOW ENDP
CODE ENDS
END START
相關知識:
LOOP指令 1.CX=CX-1 2.判斷cx中的值,不為0,執行標號程序 A1, 為0,向下執行 (即執行 MOV [SI],AX)
DEBUG分析
1.程序運行到 MOV [SI],AX 的時候,已經完成循環,這個指令是把AX的內容存到SI對應的內存單元中,由SI的值可以知道已經循環了4次
2.觀察內存中內容的變化
-D 查看內存數據
-T 單步執行