• 8086汇编学习小记王爽汇编语言实验12


    0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出‘divided error’,改成直接退出就正常显示了。注意修改ss,sp之间的中断是不响应的。

     1 assume cs : codesg, ss : stacksg
     2 
     3 stacksg SEGMENT
     4     dw 16 dup (0)
     5 stacksg ENDS
     6 
     7 
     8 
     9 codesg SEGMENT
    10 
    11 start:    mov ax, 0
    12     mov es, ax
    13     mov di, 200h
    14     mov ax, cs
    15     mov ds, ax
    16     mov si, offset do0
    17     mov cx, offset do0end - offset do0
    18     cld
    19     rep movsb
    20 
    21     mov ax, 200h
    22     mov es : [0], ax
    23     mov ax, 0
    24     mov es : [2], ax
    25 
    26     mov ax, 4c00h
    27     int 21h
    28 
    29 do0:    jmp short s0
    30     datasg:    db 'divide error!'
    31 s0:    mov ax, 0
    32     mov es, ax
    33     mov ax, 0b800h
    34     mov ds, ax
    35     mov si, 202h
    36     mov di, 12 * 160 + 70
    37     mov cx, 13
    38 s:    mov al, es : [si]
    39     mov [di], al
    40     mov al, 02h
    41     mov [di + 1], al
    42     add di, 2
    43     add si, 1
    44     loop s
    45 
    46     mov ax, 4c00h
    47     int 21h
    48 
    49 do0end:    nop
    50 
    51 codesg ENDS
    52 END start

    注意有segment标识的都是段地址,否则其他标号都是物理地址,offset可取得标号偏移量。虚拟机下除法溢出中断程序变成如下:

  • 相关阅读:
    tomcat 无法clean 的bug
    Open Type vs Open resource
    Cannot change version of project facet Dynamic Web Module to 2.4.
    股权稀释
    Java的各种打包方式
    记忆
    【转】给女儿的信
    买房费用
    工作职场
    装修-水电改造
  • 原文地址:https://www.cnblogs.com/ACystalMoon/p/2761683.html
Copyright © 2020-2023  润新知