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

(1)编写并安装int 7CH中断例程,功能为显示一个用0结束的字符串

实际运行

实验13 (1)编写并安装int 7CH中断例程,功能为显示一个用0结束的字符串.png

完整源码

  • 应用程序文件
assume cs:code
data segment
    db 'Welcome to masm!',0
data ends

code segment
    start:  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 start
  • 中断处理程序文件
assume cs:code
code segment
    start:  mov ax,cs
            mov ds,ax
            mov si, offset q1
            
            mov ax,0
            mov es,ax
            mov di,200H
            mov cx,offset q1end - offset q1
            cld
            rep movsb
            
            mov ax,0
            mov es,ax
            mov word ptr es:[7CH*4],200H
            mov word ptr es:[7CH*4+2],0
            
            mov ax,4c00H
            int 21H
            
        q1: mov ax,0B800H
            mov es,ax
            
            mov al,160
            mul dh
            mov di,ax
            
            mov al,2
            mul dl
            add di,ax
            
            mov al,cl
            s:  mov cl,[si]
                mov ch,0
                jcxz q1ret
                mov es:[di],cl
                mov es:[di+1],al
                inc si
                add di,2
                jmp short s
    
    q1ret:  iret
    q1end:  nop
    
    code ends
    end start

(2)编写并安装int 7CH中断例程,功能为完成loop指令的功能

(2)编写并安装int 7CH中断例程,功能为完成loop指令的功能

(3)分别在屏幕的第2 4 6 8 行显示4句英文诗

实际运行

实验13 (3)分别在屏幕的第2 4 6 8 行显示4句英文诗.png

完整源码

assume cs:code

code segment

        s1:        db 'Good,better,best,','$'
        s2:        db 'Never let it rest,','$'
        s3:        db 'Till good is better,','$'
        s4:        db 'And better,best.','$'
        s:         dw offset s1,offset s2,offset s3,offset s4
        row:       db 2,4,6,8
        
        start:  mov ax,cs
                mov ds,ax
                mov bx,offset s
                mov si,offset row
                mov cx,4
            ok: mov bh,0
                mov dh,[si]
                mov dl,0
                mov ah,2
                int 10H
                
                mov dx,[bx]
                mov ah,9
                int 21H
                add bx,2
                inc si
                loop ok
                
                mov ax,4c00H
                int 21H
            code ends
            end start

编程思想

  s:    dw offset s1,offset s2,offset s3,offset s4
  row:       db 2,4,6,8

偏移量也是数据
    mov si,offset row
    [si]
    inc si  
    依次取出的是 2 4 6 8  

int 21H  要求 DS:DX 指向字符串的首地址
    mov bx,offset s
    [bx]
    add bx,2
    不断指向新的字符串首地址
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容