汇编语言--实验十二

assume cs:code
  code segment
  start:
;do0安装程序-----------------
    mov ax,code
    mov ds,ax
    mov si,offset do0
    mov ax,0000
    mov es,ax
    mov di,0200h
    CLD
    mov cx,offset do0end-offset do0
    rep movsb
;do0安装结束-----------------

;设置0号中断程序入口---------
    mov ax,0
    mov es,ax
    mov word ptr es:[0000],200h
    mov ax,0000h
    mov word ptr es:[0002],0
;0号中断程序入口设置完毕-----

    mov ax,4c00h
    int 21h

do0:
    jmp short do0start
do0str:
    db "divide error!"
do0start:
    mov ax,cs
    mov ds,ax
    mov si,202h
    mov ax,0b800h
    mov es,ax
    mov di,12*160+66
    mov cx,13
s:
    mov al,ds:[si]
    mov es:[di],al
    inc si
    add di,2
    loop s

    mov ax,4c00h
    int 21h
do0end:
    nop

    code ends
    end start
  
  思考:代码中红色标注的202h是否可以用offset do0str代替?实际上我开始也是这么处理的,但测试运行后字符并未正确显示。原因在于该主程序在编译过程中offset db0str取得的是db字符串在该主程序中的偏移地址;在安装完do0后,触发除法溢出时候我们需要的是该字符串正确的固化的地址。

转载于:https://www.cnblogs.com/tsembrace/p/3267169.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值