王爽汇编 内中断 0号中断

assume cs:code

code segment
strat:
    mov ax,cs
    mov ds,ax
    mov si,offset do0   ;设置ds:si的地址为原地址

    mov ax,0
    mov es,ax
    mov di,200h         ;设置es:di的地址为目标地址

    mov cx,offset do0end - offset do0   ;设置cx为传输长度
    cld                 ;设置传输方向为正
    rep movsb
    
    mov ax,0
    mov es,ax
    mov word ptr es:[0*4],200h
    mov word ptr es:[0*4+2],0   ;0*4表示 0号中断  中断入口地址0000:0000(2字节)
    
    ;设置中断向量表
    mov ax,4c00h
    int 21h

do0:jmp short do0start  ;这里不能直接用db 因为db是伪指令!
    db "overflow!"

do0start:
    mov ax,cs
    mov ds,ax
    mov si,202h            ;因为jmp占了2个字节 设置ds:si指向字符串

    mov ax,0b800h
    mov es,ax
    mov di,12*160+36*2      ;设置显存相应的位置

    mov cx,9                ;字符串长度
s:
    mov al,[si]
    mov es:[di],al
    inc si
    add di,2                ;显存文本格式 偶数ascii 奇数存放属性
    loop s

    mov ax,4c00h
    int 21h

do0end:nop
code ends
end strat

你可能感兴趣的:(王爽汇编 内中断 0号中断)