
汇编语言
文章平均质量分 84
微尘8
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
实验11 编写子程序《汇编语言》- 王爽
实验11 编写子程序《汇编语言》- 王爽,编写一个子程序,将包含任意字符,以 0 结尾的字符串中的小写字母转变成大写字母,描述如下。名称:letterc 功能:将以 0 结尾的字符串中的小写字母转变成大写字母参数:ds:di 指向字符串首地址原创 2024-08-25 18:40:14 · 590 阅读 · 0 评论 -
汇编语言:cld, std, movsb, movsw, rep, rep movsb, rep movsw 指令
cld 指令:cld (clear df) 指令,清空 df 标志位,执行该指令后,df = 0;std 指令:std (set df) 指令,设置 df 标志为,执行该指令后,df = 1;movsb (move string byte) 指令,即按字节传送数据的字符串传送指令;movsw(move string word) 指令,即按字传送数据的字符串传送指令;在汇编语言中,rep 的作用是根据 cx 的值,循环执行跟在其后的指令,直到 cx = 0 时为止。rep movsb;原创 2024-08-25 14:59:24 · 3351 阅读 · 0 评论 -
汇编语言:cmp、je、jne、jb、jnb、ja、jna 指令
cmp (compare) 是比较指令,cmp 的功能相当于减法指令,只是不保存结果,但会根据结果对标志寄存器进行设置,cmp指令格式:cmp 操作对象1, 操作对象2。je(jump equal),等于则转移; jne(jump not equal),不等于则转移;jb(jump below),小于则转移;jnb(jump not below),不小于则转移;ja(jump above),高于则转移;jna(jump not above),不高于则转移。原创 2024-08-24 18:10:52 · 13740 阅读 · 1 评论 -
汇编语言:adc指令 和 sbb指令
adc (add carry)是带向假想的更高位进位加法指令,它利用了标志寄存器上 CF 标志位记录的进位值。CPU 提供 adc 指令的目的是用 adc 指令和 add 指令相配合,从而可以对更大的数据进行加法运算。sbb(subborrow)是带向假想的更高位借位减法指令,它利用了标志寄存器上 CF 标志位记录的进位值。CPU 提供 sbb指令的目的是用 sbb指令和 sub指令相配合,从而可以对更大的数据进行减法运算。原创 2024-08-23 18:17:10 · 3592 阅读 · 0 评论 -
汇编语言:标志寄存器ZF, PF, SF, CF, OF, DF, IF, AF 和 pushf, popf 指令
8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(Program Status Word,PSW)。OF(Overflow Flag):溢出标志位,一般情况下,它记录了有符号运算的结果是否发生了溢出。DF(Direction Flag):方向标志位,在串行处理指令中,控制每次操作后si、di的增减。IF(Interrupt Flag):中断标志位。它用来控制8086是否允许接收外部中断请求。若IF=1,8086能响应外部中断,反之则屏蔽外部中断。SF(Signed Flag):符号标志原创 2024-08-22 22:58:00 · 6429 阅读 · 0 评论 -
实验10 编写子程序《汇编语言》- 王爽
实验十 编写子程序 1. 显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供灵活的调用接口,使用者可以决定显示的位置(行、列)、内容和颜色。2. div 指令做除法,当进行8位除法的时候,用al存储结果的商,ah存储结果的余数;当进行16位除法的时候,用ax存储结果的商,dx存储结果的余数。可是现在有一个问题,如果结果的商大于al或ax所能存储的最大值,那么将引发CPU的一个内部错误,这个错误被称为:除法溢出,我们可以用下面的子程序 divdw 解决原创 2024-08-21 00:54:38 · 1172 阅读 · 0 评论 -
汇编语言:call和ret配合使用设计模块化程序
call和ret指令配合使用设计模块化程序,用栈传递参数这种技术和高级语言编译器的工作原理密切相关。bp(base pointer,基址指针)寄存器和 sp(stack pointer,栈顶指针)共同管理函数调用栈。bp 寄存器用于保存进入函数时的栈顶基址,用于作为正在运行的函数的栈帧的栈底,每一个函数都有自己的栈帧,函数栈帧的大小并不固定,一般与其对应函数的局部变量多少有关。函数运行过程中,其栈帧大小也是在不停变化的。而 sp 寄存器永远指向栈顶位置。原创 2024-08-19 21:37:44 · 1615 阅读 · 0 评论 -
汇编语言:div指令和mul指令
div 是除法指令,格式:div bl;除数为8位,存放在bl寄存器中。div byte ptr ds:[0];除数为8位,存放在ds:[0]内存字节单元中。div bx;除数为16位,存放在bx寄存器中。div word ptr ds:[0];除数为16位,存放在ds:[0]内存字单元中。mul是乘法指令,格式:mul bl;8位乘法,一个数默认放在al 8位寄存器中,另一个数存放在bl 8位寄存器中。mul byte ptr ds:[0];mul word ptr ds:[0];mul bx。原创 2024-08-17 22:27:17 · 4946 阅读 · 0 评论 -
汇编语言:call、call far ptr、call word ptr、call dword ptr、call 寄存器
call指令是转移指令,CPU执行call指令,进行两步操作:(1)将当前IP或当前CS和IP压入栈中(2)转移。call 标号指令功能:将当前IP压入栈中,然后转移到标号处执行指令。call far ptr标号指令功能:将当前CS压入栈中,然后再将当前IP压入栈中,最后转移到标号处执行指令。call 16位寄存器指令功能:将当前IP压入栈中,然后转移到寄存器中指明的目的地址处执行指令。call word ptr 内存单元地址指令功能:将当前IP压入栈中,然后转移到内存中指明的目的地址处执行指令。原创 2024-08-17 14:17:57 · 3273 阅读 · 0 评论 -
汇编语言:ret和retf指令
ret指令用栈顶中的数据,修改IP的内容,从而实现近转移。CPU执行ret指令时,相当于执行:pop IP。retf指令同时用栈顶中的数据,修改IP和CS,从而实现远转移。CPU执行retf指令时,相当于执行:(1)pop IP;(2)pop CS。原创 2024-08-16 14:53:45 · 1576 阅读 · 0 评论 -
实验9 根据材料编程《汇编语言》- 王爽
实验9 根据材料编程,编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 'welcome to masm!'原创 2024-08-16 11:00:56 · 1231 阅读 · 0 评论 -
汇编语言:loop指令
loop指令是循环指令,在8086CPU中,所有的循环指令都是短转移,其对应的机器指令有2个字节,低8位字节存放的是操作码;高8位字节存放的是转移位移(相对于当前IP的位移),用补码形式表示,范围在:-128 ~ 127,指令格式为:loop 标号原创 2024-08-14 20:44:22 · 3779 阅读 · 0 评论 -
汇编语言:jcxz 指令
在汇编语言中,jcxz 标号指令是一个有条件转移指令,用于检测CX寄存器的值,如果CX寄存器的值为0,则跳转到指令中标号所指定的地址处执行;否则,指令将继续顺序执行。原创 2024-08-14 18:37:15 · 1106 阅读 · 0 评论 -
汇编语言指令 jmp: jmp word ptr、jmp dword ptr、jmp 寄存器
1. jmp word ptr 内存单元地址 是段内转移指令,只修改IP:(IP) = (内存单元地址)2. jmp dword ptr 内存单元地址 是段间转移指令,同时修改CS和IP:(CS) = (内存单元地址 + 2),(IP) = (内存单元地址)3. jmp 段地址:偏移地址 是段间转移指令,执行该指令后,CS = 段地址,IP = 目的地址原创 2024-08-13 23:01:06 · 1862 阅读 · 0 评论 -
汇编语言指令 jmp:jmp short、jmp near ptr、jmp far ptr
jmp short 是段内短转移指令,只修改IP的值,其机器码有2个字节,低8位是用于表示jmp的段内短转移指令的指令编码,高8位是用补码形式表示的位移信息,转移的范围:-128 ~ 127。jmp near ptr 是段内近转移指令,只修改IP的值,其机器码有3个字节,低8位是用于表示jmp的段内近转移指令的指令编码,高16位是用补码形式表示的位移信息,转移的范围:-32768~ 32767。jmp far ptr 是根据目的地址进行转移的段间转移指令(又称为远转移指令),可以同时修改CS和IP。原创 2024-08-13 22:59:49 · 3756 阅读 · 0 评论 -
汇编语言相关寄存器的介绍
寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个 “8 位元寄存器”或转载 2013-06-06 23:07:56 · 848 阅读 · 0 评论