汇编语言王爽实验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}
本文重点:因为要写入中断进程,故于中断进程中调用函数仍要根据相对地址来寻址!!
具体看代码 很详细
assume cs:code,ds:data,ss:stackdata segmentdb 128 dup(0)
data endsstack segment db 128 dup(0)
stack endscode segmentstart: mov ax,stackmov ss,axmov sp,128(0)call cpy_new_int7CHcall set_new_int7CH ;如果是int9的话要save 但这里不用mov ah,1mov al,4int 7chmov ax,4c00hint 21h;=========================================================
set_new_int7CH:mov bx,0mov es,bxclimov word ptr es:[7ch*4],7e00hmov word ptr es:[7ch*4+2],0stiret;===========================================================
new_int7CH: jmp newInt7CHTABLE dw OFFSET clear_screen - OFFSET new_int7CH+7e00h ;因为代码是储存在7e00h初的 故要计算偏移地址dw OFFSET set_back_screen - OFFSET new_int7CH+7e00hdw OFFSET set_pre_screen - OFFSET new_int7CH+7e00hdw OFFSET set_pre_screen - OFFSET new_int7ch+7e00hnewInt7CH:;call clear_screen;call set_pre_screen;call set_back_screen;call set_screen ;把下面一行往直前复制 push axpush bxpush esmov bx,0mov es,bxmov bl,ahadd bx,bx ;因其为word型add bx,OFFSET TABLE -OFFSET new_int7CH +7e00h ;重点!!!!call word ptr es:[bx]pop espop bxpop axiret;=============================================
set_screen:push bxpush cxpush espush sipush dipush ds mov bx,0b800h mov es,bxmov ds,bxmov cx,80*24 ;八十个字形数据mov si,160mov di,0cldrep movsw ;字型数据 ds:si 指向es :dimov bx,160*24 ;最后一行mov cx,80mov dx,0700hsetRowBlank: mov es:[bx],dxadd bx,2loop setRowBlankpop dspop dipop sipop espop cxpop bxret;===============================================
set_back_screen:push axpush bxpush cxpush esmov bx,0b800hmov es,bxmov bx,1mov cl,4shl al,clmov cx,2000setBackScreen: and byte ptr es:[bx],10001111bor es:[bx],aladd bx,2loop setBackScreenpop espop cxpop bxpop axret;==================================================
set_pre_screen:push axpush bxpush cxpush esmov bx,0b800hmov es,bxmov bx,1 ;颜色位置mov cx,2000setPreScreen: and byte ptr es:[bx],11111000bor es:[bx],aladd bx,2loop setPreScreenpop espop cxpop bxpop axret
;=====================================================
clear_screen: push bxpush espush cxpush dxmov bx,0b800hmov es,bxmov bx,0mov dx,0700h mov cx,2000clearScreen: mov es:[bx],dxadd bx,2loop clearScreenpop dxpop cxpop espop bxret new_int7CH_end: nop;============================================================
cpy_new_int7CH:mov bx,csmov ds,bxmov si,OFFSET new_int7CHmov bx,0mov es,bxmov di,7e00hmov cx,OFFSET new_int7CH_end - OFFSET new_int7CHcldrep movsbretcode ends
end start
汇编语言王爽实验16相关推荐
- 汇编语言王爽-实验9
王爽汇编语言实验9 实验要求 参考资料 代码 assume cs:codedata segmentdb 'welcome to masm'db 02h, 24h, 71j data endscode ...
- 汇编语言---王爽 (实验 8)分析一个奇怪的程序
简介 : 分析下面的程序 , 在运行前思考 , 这个程序可以正常返回吗 ? 运行后再思考 , 为什么是这种结果 ? 通过这个程序加深对相关内容的理解 assume cs:code code segme ...
- 汇编语言王爽 实验第四章
实验一 :创建第一个源程序 在asm文件夹中创建一个名为t2的记事本 编写源文件,其次将其格式修改为asm文件 用masm t2;进行编译生成obj文件 然后用link t2;进行连接生成exe文件 ...
- 汇编语言王爽 实验12
都在代码里面了 assume cs:code,ds:data,ss:stackdata segmentdb 128 dup(0) ;一般把中断输出的字符 写道 0000:0200 -0000:03 ...
- 汇编语言 王爽 第四版 实验5
汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 实验5 编写.调试具有多个段的程序 1 编译连接下面程序,用debug加载.跟踪,回答问题. assume cs:code,ds:data, ...
- 【汇编语言 王爽】实验14代码
实验需求如下: 编程,以"年/月/日 时:分:秒"的格式显示时间 注意:CMOS RAM中储存着系统的配置信息,除了保存时间信息的单元外,不要向其他单元写入内容,否则将引起一些系统 ...
- 汇编语言 王爽 第四版 实验1
汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 文章目录 实验1 查看CPU和内存,用机器指令和汇编指令编程 1 开始执行命令: 2 指令 过程 3 4 实验1 查看CPU和内存,用机器指 ...
- 汇编语言 王爽 第四版 第二章 检测点2.2
汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点2.2 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 最小肯定是偏移地址为0, ...
- 汇编语言 王爽 第四版 第六章 检测点6.1
汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点6.1 1 下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序: assume cs:codesg cod ...
- 汇编语言 王爽第二版 总结
汇编语言 王爽第二版 总结,所以内容都是8086的 summary asssembly ,汇编总结 why: 最初始的编程语言就是使用打孔机,打出来的0 1 代码,然后把卡片插入到电脑中运行然后 看输 ...
最新文章
- 类似c 的语言,类似C的脚本语言 little-lang
- 下载恶意pcap包的网站
- poj2002 STL set
- 看奥运之二:现场看男子体操团体决赛
- 一个技术管理者的苦逼【技术管理漫谈】
- 什么是copyonwrite容器
- 开源协议的几种类型认识
- php纯真ip调用,使用php调用纯真IP数据库信息的解析组件
- Axure RP 9 原型图的绘制及交互
- 计算机二进制计算过程
- delphi android 截屏,Delphi 截图\截屏
- python全栈开发中级班全程笔记(第三模块、第一章(多态、封装、反射、内置方法、元类、作业))...
- 国产芯片---超高速、高输出电流,电压反馈放大器MS8241兼容替代LM7171
- 炫云全新支持优化渲染质量了
- 蓝牙音箱CE FCC是强制的吗
- Wex5修改Tomcat端口
- python人物抠图算法_Python实现AI自动抠图实例解析
- 【Linux】mysql命令行查看表结构,字段等信息
- win7系统屏蔽全/半角切换问题
- 使用Databricks作为分析平台