汇编题目:编写包含多个功能子程序的中断例程
安装一个新的int 7ch中断例程,为显示输出提供如下的功能子程序。
(1)清屏。
(2)设置前景色。
(3)设置背景色。
(4)向上滚动一行
(一)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行;
(二)对于2、3号功能,用al传递颜色值,(al)∈{0,1,2,3,4,5,6,7}。
代码如下:
;功能:安装一个新的int7ch中断例程,实现一个子程序 setScreen ,提供如下功能: ; (1)清屏。 ; (2)设置前景色。 ; (3)设置背景色。 ; (4)向上滚动一行 ; 入口参数说明: ; (1)每个子程序用 ah 寄存器传递功能号: ; (2)对于2、3号功能,用al传送颜色值, assume cs:code,ds:data data segment err db ' ~~~~~ ah args is error! ~~~~~','$' init dw 10 dup(0) data ends code segment start: mov ax,data mov ds,ax mov ax,0 mov es,ax mov ax,es:[7ch*4] mov init[0],ax mov ax,es:[7ch*4+2] mov init[1],ax mov es:[7ch*4],offset setScreen mov es:[7ch*4+2],cs mov ax,102h int 7ch ;call breakPoint mov ax,201h int 7ch ;call breakPoint mov ax,300h int 7ch ;call breakPoint mov ax,0h int 7ch mov ax,400h int 7ch mov ax,0 mov es,ax mov ax,data mov ds,ax mov ax,init[0] mov es:[7ch*4],ax mov ax,init[1] mov es:[7ch*4+2],ax ok: mov ax,4c00h int 21h setScreen: jmp short setmain list dw sub0,sub1,sub2,sub3 setmain: cmp ah,3 ja subErr mov bl,ah mov bh,0 shl bx,1 call word ptr list[bx] iret sub0: ;清屏 mov cx,0b800h mov es,cx mov cx,2000 mov bx,0 sub0s: mov byte ptr es:[bx],' ' add bx,2 loop sub0s ret sub1: ;设置前景色。 mov cx,0b800h mov es,cx mov cx,2000 mov bx,1 sub1s: and byte ptr es:[bx],11111000b or es:[bx],al add bx,2 loop sub1s ret sub2: ;设置背景色。 mov cx,0b800h mov es,cx mov cx,2000 mov bx,1 shl al,1 shl al,1 shl al,1 shl al,1 sub2s: and byte ptr es:[bx],10001111b or es:[bx],al add bx,2 loop sub2s ret sub3: ;向上滚动一行 mov cx,0b800h mov es,cx mov ds,cx mov di,0 mov si,160 cli mov cx,24 sub3s: push cx mov cx,160 rep movsb pop cx loop sub3s mov cx,160 mov bx,0 sub3s1: mov byte ptr es:3840[bx],' ' add bx,2 loop sub3s1 ret subErr: ;显示错误信息 mov ax,data mov ds,ax mov ah,9 mov dx,offset err int 21h jmp ok breakPoint: ;设置断点,用于调试 pushf pop bx or bh,3 push bx popf ret code ends end start
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/5163181.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2016-01-27 14:40 jack_Meng 阅读(1297) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
2015-01-27 在C#获取麦克风输入的声音的波形图