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

  • 相关阅读:
    ELK的学习与应用
    windows 常用命令
    Electron笔记
    C#基础
    IIS运行NetCore程序
    nuget打包
    web pack备忘
    基于并发订课系统的架构演变
    面试造核弹的童话
    Python3-接口自动化-11-使用join方法请求参数拼接,格式key1=value1&keys=value2....
  • 原文地址:https://www.cnblogs.com/tsembrace/p/3267169.html
Copyright © 2011-2022 走看看