ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

汇编语言(第3版,王爽著):实验13-3 编写、应用中断例程 补全程序

2022-05-26 13:33:17  阅读:171  来源: 互联网

标签:13 补全 例程 ah mov 中断 int 子程序


实验13-3 编写、应用中断例程-补全程序

1) 思路:

  1. 由于代码给出了一部分,咱们可以先通过调用的 int 指令 来判断要实现的功能
  2. 比如程序中的 int 10h 中断例程是 BIOS 提供的中断例程,ah 是用来传递内部子程序的编号,(ah)=2 表示调用第 10h 号中断例程的 2 号子程序,功能为设置光标位置,可以提供光标所在的 行号列号页号为参数
  3. 比如程序中的 int 21h 中断例程是 DOS 提供的中断例程,ah 是用来传递内部子程序的编号,(ah)=9 表示调用第 21h 号中断例程的 9 号子程序,功能为在光标位置显示字符串,可以提供要显示字符串的地址作为参数
  4. 具体的每一条指令的功能,请看下方的代码注释

2) 补全程序示意图:

补全程序示意图

3) 完整的程序代码:

文件名:exp133.asm

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                   ; 循环 4 次
    ok:
        mov bh, 0                   ; 第 0 页
        mov dh, ds:[si]             ; dh 中放行号
        mov dl, 0                   ; dl 中放列号
        mov ah, 2                   ; ah 传递了中断例程内部子程序的编号,2 的功能为设置光标位置
        int 10h                     ; int 10h 中断例程是 BIOS 提供的中断例程,和屏幕输出有关

        mov dx, ds:[bx]             ; 获取字符串偏移地址,中断例程中 ds:dx 指向字符串,要显示的字符串需 '$' 作为结束符
        mov ah, 9                   ; ah 传递了中断例程内部子程序的编号,9 号子程序的功能为在光标位置显示字符串
        int 21h                     ; int 21h 中断例程是 DOS 提供的中断例程
        inc si                      ; si 为不同行号元素的下标
        add bx, 2                   ; bx 为不同的要显示的字符串的偏移地址的下标
        loop ok

        mov ax, 4c00h
        int 21h
code ends

end start

4) 程序运行效果:

程序运行效果

标签:13,补全,例程,ah,mov,中断,int,子程序
来源: https://www.cnblogs.com/wanghuizhao/p/16313134.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有