⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a7-2.asm

📁 A1.asm 显示程序实验 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT USE16 MES1 DB
💻 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 + -