实验十三_编写、应用中断例程_ 1

编写并安装int 7ch中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处
参数:(dh)= 行号,(dl)= 列号,(cl)= 颜色,ds:si指向字符串首地址
以上中断例程安装成功后,对下面的程序进行单步跟踪,尤其注意观察int、iret指令执行前后cs、ip和栈中的状态
assume cs:code 
data segment 
   db "welcome to masm!",0 
data ends 
code segment 
start:  mov dh,10 
        mov dl,10 
        mov cl,2 
        mov ax,data 
        mov ds,ax 
        mov si,0 
        int 7ch; 
        mov ax,4c00h 
        int 21h 
code ends  
end start  
;------------int 7ch中断例程安装------------------------------------ 
assume cs:code  
code segment 
start:        mov ax,cs 
        mov ds,ax 
        mov si,offset disp        ;设置ds:si指向源地址 
        mov ax,0 
        mov es,ax 
        mov di,200h                ;设置es:di指向目的地址 
        mov cx,offset dispend - offset disp;设置cx为传输长度 
        cld 
        rep movsb 

        mov ax,0                ;设置中断向量表 
        mov es,ax 
        mov es:[7ch*4],200h 
        mov es:[7ch*4+2],0         

        mov ax,4c00h 
        int 21h 
         
disp:   push ax 
        push cx 
        push es 
        push si 
        push di 
         
        mov ax,0b800h 
        mov es,ax 
        mov al,160 
        dec dh 
        mul dh 
        dec dl 
        add dl,dl 
        mov dh,0 
        add ax,dx 
        mov di,ax                ;设置es:di指向显存空间要求位置 
         
    s:  mov al,ds:[si] 
        cmp al,0 
        je ok 
        mov es:[di],al 
        mov es:[di+1],cl 
        inc si 
        add di,2 
        jmp short s 
     
    ok: pop di 
        pop si 
        pop es 
        pop cx 
        pop ax 
        iret 
dispend:nop 
code ends 
end start

转载于:https://www.cnblogs.com/xpjiang/p/4524433.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值