![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
zhaixh_89
这个作者很懒,什么都没留下…
展开
-
汇编语言17(字符串的输入)
最基本的字符串输入程序通常具备以下功能(1)在输入的同时要显示输入的字符串(2)在输入回车符后,字符串输入结束(3)能删除已输入的字符分析如下:(1)我们知道字符串的输入和删除是以栈的访问规则进行的,即后进先出,因此我们可以用栈的方式来管理字符串的存储空间(2)输入回车符后可以在字符串中加入0,表示字符串结束(3)每次重新输入一个字符或者删除一个字符,都要重新显示字符串,即从栈底到栈...原创 2019-11-14 10:54:40 · 2965 阅读 · 0 评论 -
实验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:codesta...原创 2019-10-25 21:07:14 · 370 阅读 · 0 评论 -
直接定址表
一、单元长度的标号之前的课程中,我们一直在代码段中使用标号来标记指令、数据、段的起始地址。比如,下面的程序将code段中的a标号处的8个数据累加,结果存储到b标号处的字中。assume cs:codecode segment a: db 1,2,3,4,5,6,7,8 b: dw 0 start:mov si,offset a mov bx,offset ...原创 2019-10-25 11:59:48 · 502 阅读 · 0 评论 -
安装新的中断例程9
我们在之前编写的int9安装例程基础上加一个功能功能:在DOS下,按F1键后改变屏幕当前的显示颜色,其他的按键照常处理。我们简单分析一下:(1)改变屏幕的显示颜色我们知道,在80x25的彩色字符模式显示缓冲区中每页约有4000个字节的内容显示在屏幕上,因此程序如下: mov ax, 0b800h mov es, ax mov bx, 1 mov cx, 2000s...原创 2019-10-21 09:53:53 · 242 阅读 · 0 评论 -
int 9中断例程优化分析
上篇文中我们已经实现了int9中断例程的编写,根据课后检测点我们对上文代码做出优化。代码如下:assume cs:codestack segment db 128 dup (0)stack endsdata segment dw 0, 0data endscode segment start:mov ax, stack mov ss, ax mo...原创 2019-10-19 17:01:46 · 910 阅读 · 0 评论 -
PC机键盘的处理过程(外中断-键盘输入)
我们知道cpu在计算机系统中除了能够执行指令,进行运算以外,还应该能对外部设备进行控制,接收它们的输入,向它们进行输出,也就是说cpu除了具有运算能力外,还要有I/O(Input/Output,输入输出)能力。通过以前的学习我们知道,PC系统的接口卡和主板上装有各种接口芯片。这些外设接口芯片的内部有若干寄存器,cpu将这些寄存器当作端口来访问。外设的输入不直接送入内存和cpu,而是送入相关的接口...原创 2019-10-19 16:24:35 · 5989 阅读 · 3 评论 -
实验13 编写、应用中断例程(续)
(1)编写并安装int 7ch中断例程,功能为显示一个用0结尾的字符串,中断例程安装在0:200处。 参数: (dh)=行号, (dl)=列号, (cl)=颜色 ds:si指向字符串首地址 以上中断例程安装好后,对下面的程序进行单步跟踪,尤其注意int,iret指令执行前后cs,ip的和栈中的状态。assume cs:codedata segment...原创 2019-09-29 10:24:32 · 304 阅读 · 0 评论 -
实验13 编写、应用中断例程
(2)编写并安装int 7ch中断例程,功能为完成loop指令的功能。参数:(cx)=循环次数,(bx)=位移。 以上中断例程安装好后,对下面的程序进行单步跟踪,尤其注意int,iret指令执行前后cs,ip的和栈中的状态。 assume cs:code code segment start: mov ax, 0b800H ...原创 2019-09-27 11:07:00 · 509 阅读 · 0 评论 -
汇编语言(王爽第三版)检测点13
(1)在上面内容中,我们用7cH中断例程实现loop功能,则上面的7cH中断例程所能进行的最大转移位移是多少?答案:题目描述个人感觉有二义性,因此从loop实现角度和位移值bx变量两方面来讨论 如果从loop的指令角度上看,loop是段内短转移,它的范围是-128~127,也就是说最大转移位移是128. 如果从bx变量来说,bx存储二进制补码数据的表示范围。对于...原创 2019-09-24 11:02:34 · 533 阅读 · 0 评论 -
实验12 编写0号中断的处理程序
编写0号中断处理程序,使得在除法溢出时,在屏幕中间显示字符串'divide error!',然后返回dos。前面讲到,内存0000:0000~0000:03FF,大小为1KB的空间是系统存放中断处理程序入口地址的中断向量表。8086支持256个中断,但是,实际上,系统要处理的中断事件远没有达到256个,所以在向量列表中,有许多单元是空的。中断向量表睡觉哦PC系统中最重要的内存区,只用来存放...原创 2019-09-23 10:05:56 · 1392 阅读 · 0 评论 -
汇编语言(王爽 第三版)实验11 编写子程序
编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。名称:letterc功能:将以0结尾的字符串中的小写字母转变成大写字母参数:ds:si指向字符串首地址应用举例:assume cs:codesgdatasg segment db "Beginner's All-purpose Symbolic Instruction Code....原创 2019-09-19 09:40:06 · 1068 阅读 · 0 评论 -
状态寄存器标志位对应状态值对应表
在debug中,每种标志位的状态值都存在二种值:0和1,它们使用大写英文来描述。例如:如遇到ZR值代表指令结果为0,NZ代表指令结果不为0;注意:它们的值在debug中,某状态下只显示一种值,要么是ZR要么是NZ;不能同时出现的。结合debug讲解下:这些符号代表的就是标志寄存器里常用标志位的值。这个是符号值对应表:溢出标志OF(Over flow flag) OV(1)...转载 2019-08-22 10:31:56 · 5002 阅读 · 0 评论 -
王爽《汇编语言》第三版 第十章 实验十(显示字符串)
1、显示字符串问题显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能、我们应该提供最灵活的调用接口,使调用者可以决定显示的位置(行和列)、内容和颜色子程序描述名称:show_str功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。参数:(dh)=行号(取值范围024),(dl)=列号(取值范围079),(cl)=颜色,ds:si指向字符串的首地...原创 2019-08-08 10:00:08 · 878 阅读 · 1 评论 -
王爽《汇编语言》第三版 第十章 实验十(数值显示)
子程序描述名称:dtoc功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。参数:(ax)=word型数据 ds:si指向字符串的首地址返回:无应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。在显示时我们调用本次实验中的第一个子程序show-str。提示 下面我们对这个问题进行一下简单地分析。(1) 要得到字符串“1...原创 2019-08-14 10:55:38 · 1062 阅读 · 0 评论 -
汇编语言(王爽第三版)实验9根据材料编程
编程: 在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串:“welcome to masm!”程序分析: 1)在内存中定义并初始化一个字符串:“welcome to masm!”(这个在数据段中定义就可以,使用db) 2)由材料提示(这里是8位的二进制的组合,形成一个属性)属性字节的格式: 7 6 5...原创 2019-07-26 10:59:10 · 846 阅读 · 0 评论 -
汇编语言(寻址方式在结构化数据访问中的应用-王爽汇编语言第三版实验7)
问题提出:Power idea公司的基本情况如下: 见书中数据列表:下面格式已经定义好了这些数据:assume cs:codedata segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','198...原创 2019-07-13 12:01:26 · 577 阅读 · 0 评论