【学习笔记】汇编:自己模拟内中断函数设计

由于内中断(int)事实上是调用预先存在内存中的函数,所以我们可以覆盖掉原函数,自己完成内中断函数的设计

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    db 128 dup(0)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AX,STACKS
    MOV SS,AX
    MOV SP,128
    
    CALL copy_new_7CH
    CALL set_new_7CH
    
    INT 7CH
    
    MOV AH,4CH
    INT 21H
;===============================================
new_7CH:		MOV AX,1000H
				IRET
end_new_7CH:	
;===============================================
set_new_7CH:		MOV BX,0
					MOV ES,BX
					
					MOV word ptr ES:[7CH*4],7E00H
					MOV word ptr ES:[7CH*4+2],0
					
end_set_new_7CH: 	RET
;===============================================
copy_new_7CH:		MOV AX,0
					MOV ES,AX
					MOV DI,7E00H
					
					MOV AX,CS
					MOV DS,AX
					MOV SI,OFFSET new_7CH
					
					mov cx,OFFSET end_new_7CH - new_7CH
					cld
					rep movsb
end_copy_new_7CH:	ret
;===============================================
CODES ENDS
    END START

猜你喜欢

转载自blog.csdn.net/h2809871142/article/details/79407389