当前位置: 首页 > news >正文

***汇编语言 实验16 编写包含多个功能子程序的中断例程

汇编语言 实验16 编写包含多个功能子程序的中断例程


实验要求

安装一个新的int7ch中断例程,为显示输出提供如下功能子程序。
    (1)清屏;
    (2)设置前置色;
    (3)设置背景色;
    (4)向上滚动一行。
入口参数说明如下。
    (1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示想上滚动一行
    (2)对于1、2号功能,用al传送颜色值,(al)∈{0,1,2,3,4,5,6,7}。

参考程序

;安装一个新的int7ch终端例程,为显示输出提供如下功能子程序
;入口参数:
    ;ah传递功能号
    ;al传递颜色值
assume cs:code
code segment
start:
    mov bx,cs
    mov ds,bx
    mov si,offset int7ch
    mov bx,0
    mov es,bx
    mov di,200h
    mov cx,offset int7ch_end-offset int7ch
    cld
    rep movsb
    cli
    mov word ptr es:[7ch*4],200h
    mov word ptr es:[7ch*4+2],0
    sti

    mov ah,2
    mov al,2
    int 7ch

    mov ax,4c00h
    int 21h
    ORG 200H
;中断例程
int7ch:
    push ax
    push bx
    jmp begin
    table dw sub0,sub1,sub2,sub3
begin:
    cmp ah,3
    ja sret
    add bl,ah
    mov bh,0
    add bx,bx
    call word ptr table[bx]
sret:
    pop ax
    pop bx
    iret

;清屏
sub0:
    push bx
    push es
    push ds
    push di
    push si
    push cx
    mov bx,0b800h
    mov es,bx
    mov ds,bx
    mov si,160
    mov di,0
    mov cx,24
    cld
sub0s:
    push cx
    mov cx,160
    movsb
    mov cx,80
    mov si,0
    pop cx              ;
    loop sub0s          ;
sub0ss:
    mov word ptr es:[si][160*24],' '
    add si,2
    loop sub0ss
    pop cx
    pop si
    pop di
    pop ds
    pop es
    pop bx
    ret
;改变前景色
sub1:
    push ax
    push bx
    push es
    push cx
    push di
    mov bx,0b800h
    mov es,bx
    mov di,1
    mov cx,2000
sub1s:
    and byte ptr es:[di],11111000b
    or es:[di],al
    add di,2
    loop sub1s
    pop di
    pop cx
    pop es
    pop bx
    pop ax
    ret
;改变背景色  
sub2:
    push bx
    push es
    push cx
    mov cl,4    ;al的取值范围是0-7,只占前4个字节
    shl al,cl   ;但是背景色是第4-6位,所以无法重合,需要左移4位
    mov bx,0b800h
    mov es,bx
    mov bx,1
    mov cx,2000
sub2s:
    and byte ptr es:[bx],10001111b
    or es:[bx],al
    add bx,2
    loop sub2s
    pop cx
    pop es
    pop bx
    ret
;向上滚动一行
sub3:
    push bx
    push es
    push ds
    push di
    push si
    push cx
    mov bx,0b800h
    mov es,bx
    mov ds,bx
    mov di,0
    mov si,160
    cld
    mov cx,24
sub3s:
    push cx
    mov di,0
    mov si,160
    mov cx,160
    rep movsb
    pop cx
    loop sub3s
sub3ss:
    mov byte ptr [160*24+si],' '    ;
    add si,2
    loop sub3ss;最后一行清空
    pop cx
    pop si
    pop di
    pop ds
    pop es
    pop bx
    ret

int7ch_end:
    nop
code ends
end start

中间又断了那么多天,今天是七月十号,就当做暑假第一天吧。
2017年7月10日17:26:42

转载于:https://www.cnblogs.com/litlife/p/7512768.html

相关文章:

  • SonarQube 安装
  • Spark RDDs vs DataFrames vs SparkSQL
  • CS61B LAB1
  • mysql HA 负载均衡
  • linux下如何判断oracle数据库tns是否设置正常
  • bzoj 2038 [2009国家集训队]小Z的袜子(hose) 莫队算法
  • VS2008让Release配置也能调试起来~
  • 图解Activity启动流程,进阶高级
  • 面向对象原则之一 迪米特法则
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于TRIM的优化技巧
  • 切换tab页
  • 哈希算法 加密算法
  • vuejs经验交流之-图片上传
  • 记一次Runtime Hook的问题
  • 4. 路由到控制器 - Laravel从零开始教程
  • bearychat的java client
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Swoft 源码剖析 - 代码自动更新机制
  • 彻底搞懂浏览器Event-loop
  • 从重复到重用
  • 力扣(LeetCode)965
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 嵌入式文件系统
  • 深度解析利用ES6进行Promise封装总结
  • 阿里云服务器如何修改远程端口?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • (6)添加vue-cookie
  • (NSDate) 时间 (time )比较
  • (附源码)springboot教学评价 毕业设计 641310
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (图)IntelliTrace Tools 跟踪云端程序
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)可以带来幸福的一本书
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .Net - 类的介绍
  • .net core 6 redis操作类
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ACTF2020 新生赛]Include
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [CISCN 2019华东南]Web11
  • [Codeforces] number theory (R1600) Part.11
  • [Contest20180313]灵大会议
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页