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

由于内中断(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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值