zoukankan      html  css  js  c++  java
  • 汇编语言--实验十二

    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后,触发除法溢出时候我们需要的是该字符串正确的固化的地址。

  • 相关阅读:
    【2020Python修炼记】网络编程(三)socket编程之粘包
    2020python作业——scoket编程(一)
    月考二
    【2020Python修炼记】网络编程(二)socket编程之socket 的介绍+TCP/UDP
    Gym100889L
    poj3233
    upper_bound
    lower_bound
    Gym-102141E
    P1020 导弹拦截
  • 原文地址:https://www.cnblogs.com/tsembrace/p/3267169.html
Copyright © 2011-2022 走看看