汇编笔记
文章平均质量分 73
王爽汇编语言
小闫爱拉杆
这个作者很懒,什么都没留下…
展开
-
王爽汇编语言课程设计2 个人学习笔记(附源码)
程序功能:1)reset pc 重新启动计算机2)start system 引导现有的操作系统3)clock 进入时钟程序4)set clock 设置时间用户输入1后重新启动计算机用户输入2后引导操作系统(考虑硬盘C的0道0面1扇区)用户输入3后,执行动态显示当前日期、时间的程序(显示格式:年/月/日 时:分:秒 循环读取CMOS)进入此功能一直动态显示当前时间,在屏幕上按秒变化的效果实验截图:实验思路:实验代码:assume cs:code,es:datedate seg原创 2020-07-26 09:56:13 · 320 阅读 · 0 评论 -
开机时,BIOS和DOS中断例程的安装过程及相关功能
以下内容为王爽汇编语言(第三版)书中内容,为以后复习使用,特此声明。BIOS和DOS所提供的的中断例程在系统的ROM中存放这一套程序,称为BIOS(基本输入输出系统),BIOS中主要包含以下及部分内容:1)硬件系统的检测和初始化程序;2)外部中断和内部中断的中断例程;3)用于对硬件设备进行I/O操作的中断例程;4)其他和硬件系统相关的中断例程。操作系统DOS也提供了中断例程,从操作系统的角度来看,DOS的中断例程就是操作系统向程序员提供的编程资源。BIOS和DOS在所提供的中断例程中包含了许原创 2020-07-19 22:58:04 · 1081 阅读 · 0 评论 -
王爽汇编语言 课程设计1(学习笔记)
结果展示:题目要求:给出代码中的数据段,将数据段中的数据打印到屏幕上,数据包括年份、收入、雇员数、人均收入(需设计代码求出)思路:要输出四列数据,而屏幕一行可以显示80个字符,所以我给每列数据分配20列显示列,如上图在给出的数据段中,除了年份是字符外,其余数据都是整型,无法直接打印在屏幕上,这就需要生成它们对应的字符码为了打印方便,我先定义了一个table段,并开辟出21*80个内存来存储数据,格式如下:年份(占20字节) 收入(占20字节) 雇员数(占20字节)平均收入(占19字节原创 2020-07-03 11:46:29 · 462 阅读 · 0 评论 -
王爽汇编语言实验16 (个人笔记)
实验要求:安装一个新的int7ch 中断例程,为显示输出提供如下功能子程序。(1)清屏(2)设置前景色(3)设置背景色(4)向上滚动一行入口参数说明(1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行(2)对于1、2号功能,用al传递颜色值,al取值0-7思路:显存地址中偶数位为显示字符,奇数位为属性字节前景色:2 1 0 位背景色:6 5 4 位闪烁: 7 位高亮:3 位清屏:将显存偶数位数据变为‘ ’;设置前景色背景色,先将对应原创 2020-07-01 19:54:20 · 385 阅读 · 0 评论 -
王爽汇编语言 实验15(中断例程)
实验要求:安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不在松开如果松开,就显示满屏的“A”,其他键照常处理。提示:按下一个键时产生的扫描码称为通码,松开一个键产生的码叫做断码。断码 = 通码 + 80h。掌握:一、设置中断例程:1.设置ds:si指向源地址2.设置es:di指向目的地址3.设置cx为传输长度4.设置传输方向为正(cld)5.设置中断向量表6.中断代码内容二、int指令执行时,CPU进行的工作1 取中断类型码n2 标志寄存器入栈3 IF=0原创 2020-07-01 18:31:23 · 760 阅读 · 0 评论 -
王爽汇编语言 14章实验拓展
实验要求:在屏幕上显示从9到0倒数读秒思路:此时需要用到CMOS RAM内存放秒信息的0号单元地址地址端口70h数据端口71h首先从CMOS RAM的0号单元读出当前秒的BCD码,将BCD码保存作为倒数9秒开始的标记然后开始第二次的访问,将得到的BCD码与之前保存的进行比较,若相等证明间隔时间还没到1秒,若不等则证明间隔1秒,此时打印对应的字符到显示器上。(0-9对应的字符ASCII码值为30h-39h)实现代码assume cs:codecode segmentstart: mov原创 2020-07-01 17:20:54 · 137 阅读 · 0 评论 -
王爽汇编语言 实验14 个人学习笔记
实验要求:编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。需知:在CMOS RAM中,存放年月日时分秒这六个信息的长度都为1个字节,存放单元为:秒:0分:2时:4 日:7 月:8 年:9以BCD码存放(以4位二进制数表示十进制数码的编码方法)十进制:0 , 1…二进制:0000 0001…数值26 ,用BCD码表示为 0010 0110.要访问CMOS RAM的信息,首先要向地址端口70h写入要访问的单元地址,例如:mov al,8 (高原创 2020-07-01 11:52:55 · 361 阅读 · 0 评论 -
王爽汇编语言 13章拓展实验(个人笔记)
要求:编写中断程序 ,使得在每执行一行命令,都会打印出相对应的偏移地址测试代码:assume cs:codecode segmentstart:编写代码区mov bx,0mov ax,30sub cx,1mov ax,4c00hint 21h思路:如果要想使得没执行一行代码,都打印偏移地址,那么我们首先会考虑用到单步中断。(1)CPU执行 int 指令过程:a.取中断类型b.标志寄存器入栈,IF TF置0c.CS IP入栈d.(IP)=(N* 4),(CS) = (N*原创 2020-06-07 12:32:42 · 250 阅读 · 0 评论 -
王爽汇编语言 实验13 个人笔记
(1)要求:编写并安装int 7ch 中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。参数: dh = 行号, dl = 列号,cl = 颜色,ds:si指向字符串首地址。思路:这里单纯的就是显示字符串,只需要编好显示子程序,再将子程序安装到0:200处,设置中断向量表即可。dh* 160确定所在行的内存地址,dl* 2确定所在列dh* 160 + dl* 2 就是要显示的字符串所要在的内存地址(前提是在B800h的基础上)代码:assume cs:codecode原创 2020-06-05 23:09:30 · 262 阅读 · 0 评论 -
王爽汇编语言12章拓展实验 个人学习笔记
题目要求:编写1号中断,将DOS窗口中的显示的所有字母a都变为绿色思路:因为要查看窗口的所有字母,所有运行程序的时候应该将显存上存储数据的内存遍历一遍,用来找到a显存是从b800:0000(总共25行,每行160列,25*160=4000字节)开始的,我们又知道偏移地址为偶数用来存储数据,奇数用来存储属性,所以我们只需要遍历偏移地址为偶数的显存地址就可以(遍历2000次)最后就是还有一个小小的小问题,欢迎大家讨论指正 = - =代码:assume cs:codecode segment原创 2020-06-05 19:19:43 · 177 阅读 · 0 评论 -
王爽汇编语言 实验12 个人学习笔记
实验12要求编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!”,然后返回到DOS思路:先选一块儿其他程序不会用到的内存区,用它来存放以后的中断处理程序do0通过使用rep movsb 以及“-”运算实现将do0代码段复制到上述内存区设置中断向量表,将存放代码的偏移地址和段地址依次存放在0**4和0*4+2中代码:assume cs:codecode segmentstart: mov ax,cs mov ds,ax原创 2020-06-05 18:39:25 · 191 阅读 · 0 评论 -
王爽汇编语言 实验11 学习笔记
王爽汇编语言 实验11 个人学习笔记编写一个子程序名称:letter功能:将以0结尾的字符串中的小写字母转变为大写字母参数:ds:si指向字符串首地址思路:题目要求只将小写字母变为大写,剩余其他不变,而26个小写字母在ASCII码中对应的是97-122的十进制数,所以每次判断一个字节前先比较这个字节的数是否在这一范围内,然后通过小写字母二进制第五位上是1,大写字母第五位上是0的区别,通过与运算将字母变大写代码:assume cs:codesgdatasg segment db "原创 2020-06-05 17:46:10 · 293 阅读 · 0 评论 -
王爽汇编语言(第三版)实验10 编写子程序 个人学习笔记
1. 显示字符串名称:show_str功能:在指定位置,用指定的颜色,显示一个用0结束的字符串。参数:(dh)=行号(取值范围024),(dl)=列号(取值范围079),(cl)=颜色,ds:si指向字符串的首地址返回:无应用举例:在屏幕的8行3列,用绿色显示data段的字符串。代码:assume cs:codedata segment db 'Welcome to masm...原创 2020-05-08 11:20:21 · 293 阅读 · 0 评论