汇编语言DOS中断例程应用

我们前面一直使用的是int 21 h中断例程的4ch号功能,即程序返回功能,如下:

int 21h 中断例程的 4ch 号功能是程序返回功能
mov ah , 4ch     ; 程序返回
mov al , 0       ; 返回值
int 21h

(ah)=4ch 表示调用第 21h 号中断例程的 4ch 号子程序,功能为程序返回,可以提供返回值作为参数。
我们前面使用这个功能的时候经常写做:

mov ax,4c00h
int 21h

我们看一下int 21 h中断例程在光标位置显示字符串的功能:

ds:dx指向字符串       ;要显示的字符串需用”S',作为结束符
mov ah,9             ;功能号9,表示在光标位置显示字符串
int 21h      

(ah)=9表示调用第21h号中断例程的9号子程序,功能为在光标位置显示字符串,可以提供要显示字符串的地址作为参数。
编程:在屏幕的S行12列显示字符串“Welcome to masm! "。

assume cs:code
data segment
        db 'Welcome to masm!' , '$'     ; 汇编中字符串还是单个字符用"或者'围起来都一样
      ; db "Welcome to masm!" , '$'
data ends

code segment
start:  mov ah , 2      ; 设置光标位置
        mov bh , 0
        mov dh , 12
        mov dl , 32
        int 10h

        mov ax , data
        mov ds , ax
        mov dx , 0           ; 设置待显示字符串位置,这个中断中要用dx来存放偏移
        mov ah , 9           ; 功能号9显示字符串
        ; mov bl , 11001010b ;21h中不能设置颜色了都
        int 21h

        mov ax , 4c00h      ; 调用4ch号功能,返回值0
        int 21h  
code ends
end start

上述程序在屏幕的5行12列显示字符串“Welcome to masm! ",直到遇见“$”“$”本身并不显示,只起到边界的作用)。
如果字符串比较长,遇到行尾,程序会自动转到下一行开头处继续显示;如果到了最后一行,还能自动上卷一行。
DOS为程序员提供了许多可以调用的子程序,都包含在int 21h中断例程中。我们这里只对原理进行了讲解,对于DOS提供的所有可调用子程序的情况,读者可以参考相关的书籍。


发布日期:

所属分类: 编程 标签:  


没有相关文章!