?? a7-2.asm
字號:
;A7-2.asm
;用功能調用實現子程序設計
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DDATA SEGMENT
CSBAK DW ?
IPBAK DW ?
MKBAK DB ?
SW DW ?
MES1 DB 'The data in buf1 are:',0AH,0DH,'$'
BUF1 DB 11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH,00H
DDATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DDATA
START PROC FAR
MOV AX,DDATA
MOV DS,AX
MOV AX,0 ;修改47H號中斷的中斷矢量
MOV ES,AX
MOV DI,4*47H
MOV AX,ES:[DI]
MOV IPBAK,AX ;保存原有IP
MOV AX,OFFSET MYINT ;修改為用戶自定義中斷入口
CLD
STOSW
MOV AX,ES:[DI] ;保存原有CS
MOV CSBAK,AX
MOV AX,SEG MYINT
STOSW
MOV DX,OFFSET MES1 ;顯示提示信息
MOV AH,09H
INT 21H
MOV SI,OFFSET BUF1 ;顯示BUF1中的內容
MOV CX,10H
INT 47H
MOV AX,0 ;恢復系統中斷矢量
MOV ES,AX
MOV DI,4*47H
MOV AX,IPBAK
CLD
STOSW
MOV AX,CSBAK
STOSW
MOV AX,4C00H ; 返回dos
INT 21H
RET
ENDP
MYINT PROC FAR ;自定義顯示中斷,入口參數為BL
PUSH AX
PUSH DX
C1: MOV AL,[SI]
AND AL,0F0H ;取高4位
SHR AL,4
CMP AL,0AH ;是否是A以上的數
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL ;顯示字符
MOV AH,02H
INT 21H
MOV AL,[SI]
AND AL,0FH ;取低4位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL ;顯示字符
MOV AH,02H
INT 21H
INC SI
LOOP C1
POP DX
POP AX
IRET ;中斷返回
ENDP
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -