[汇编语言] 实验13-编写、应用中断例程

2019-09-18  本文已影响0人  耿杰

一、编写并安装 int 7ch 中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。

assume cs:code

data segment
    db 'welcome to masm!', 0    
data ends 
 
code segment
    begin: 
        mov dh, 10
        mov dl, 10
        mov cl, 2
        mov ax, data
        mov ds, ax
        mov si, 0
        int 7ch   
        mov ax, 4c00h
        int 21h    

code ends
end begin

答案

assume cs:code

data segment
    db 'welcome to masm!', 0    
data ends 
 
code segment
    begin:
        // 安装 int 7ch中断例程对应的程序在 0000:0200H处
        mov ax, code
        mov ds, ax
        mov si, offset scstart
        mov ax, 0h
        mov es, ax
        mov di, 200h
        mov cx, offset scsend-offset scstart
        cld
        rep movsb
        
        // 设置中断向量表        
        mov ax, 0
        mov es, ax
        mov word ptr es:[7ch*4], 200h
        mov word ptr es:[7ch*4+2], 0h
        
        // 测试程序            
        mov dh, 10
        mov dl, 10
        mov cl, 2
        mov ax, data
        mov ds, ax
        mov si, 0
        int 7ch
        
        mov ax, 4c00h
        int 21h    
     
     // int 7ch 的中断例程  
     scstart:
        push dx 
        push cx
        push bx
        push ax
        
        // 设置要显示的位置
        mov ax, 0B800h
        mov es, ax
  
        mov al, 50 
        mul dh
        mov si, ax
        mov al, 4
        mul dl
        add si, ax
        
     s:
        // 循环遍历显示字符串        
        mov cl, [bx]
        mov ch, 0
        // 如果cx=0000 跳转至ok标号处
        jcxz ok   
        // 要显示的字符     
        mov es:[si], cl
        // 要显示的字符的属性
        mov es:[si+1], dl
              
        inc bx
        add si, 2
        jmp short s
     
     // 退出int 7ch的程序       
     ok:
        pop ax
        pop bx
        pop cx 
        pop dx
        iret 
             
     scsend: nop  
code ends
end begin

分析

二、编写并安装 int 7ch 中断例程,功能为完成loop指令的功能。


上一篇 下一篇

猜你喜欢

热点阅读