当前位置:首页 > 微机原理与接口技术 期末复习总结 - 图文
微机原理与接口技术
例如:JMP DWORD PTR [SI]
该指令执行后,程序转移到以SI及SI+1两单元内容作为IP,而以SI+2,SI+3两单元作为CS的地址 ④ JMP 标号
(2)条件转移指令(重点?)
① 根据单个标志位设置的条件转移指令(只能段内转移,只能是短转移) JC ;结果有进位或借位(CF=1),则转移 JNC :结果没有进位或借位(CF=0),则转移
JP ;低8位有偶数个1 (PF=1),则转移 JNP/JPO ;低8位有奇数个1(PF=0),则转移 JZ/JE ;结果为零(ZF=1),则转移 JNZ/JNE ;结果不为零(ZF=0),则转移 JS ;结果为负数,即SF=1,则转移 JNS ;结果为正数,即SF=0,则转移 JO ;结果溢出OF=1,则转移 JNO ;结果不溢出OF=0,则转移 ②根据组合条件设置的条件转移指令 这类指令主要用来判断两个数的大小。 ??判断无符号数的大小
?JA /JNBE 高于/不低于则转移,即A>B ?JAE/JNB 高于等于/不低于A?B则转移 ?JBE/JNA 低于或等于/不高于则转移即A?B ?JB/JNAE 低于/不高于等于,A
不高于(Not Above,简写为NA) 低于(Below,简写为B)
不低于(Not Below,简写为NB) 等于(Equal等于)
★判断有符号数的大小??JG ;大于则转移(A>B)
?JGE;大于或等于则转移(A?B) ?JLE;小于或等于则转移(A?B) ?JL;小于则转移(A<B= 大于(Greater,简写为G) 不小于(Not Less,简写为NL) 小于(Less,简写为L)
不大于(Not Greater,简写NG) ④ 测试转移指令
JCXZ OPRD 当CX=0时转移
不对CX寄存器内容进行操作,只根据CX内容控制转移,所以程序中要写CX=CX±~ 2、循环控制指令
25 / 66
微机原理与接口技术
?用在循环程序中以确定是否要继续循环。 ?循环次数通常置于CX中。
?转移的目标应在距离本指令-128~+127的范围之内。 ?循环控制指令不影响标志位。
(1) LOOP
功能:先将CX寄存器内容减1后送回CX,再判断CX是否为0,若CX≠0,则转移到目标标号所给定的地址继续循环,否则,结束循环顺序执行下一条指令 格式:LOOP label 操作:(CX)-1→CX;
若(CX)≠0,则转至label处执行;
否则退出循环,执行LOOP后面的指令。 LOOP指令与下面的指令段等价: DEC CX JNZ label 格式 LOOP OPRD LOOPNZ/LOOPNE OPRD LOOPZ/LOOPE OPRD 执行操作 CX=CX-1,如CX≠0,则继续循环 CX=CX-1,如CX≠0且ZF=0,则继续循环 CX=CX-1,如CX≠0且ZF≠0,则继续循环 3、过程调用指令 (1)调用指令CALL
一般格式:CALL sub ;sub为子程序的入口 子程序是完成特定功能的一段程序
当主程序(调用程序)需要执行这个功能时,采用CALL调用指令转移到该子程序的起始处执行
当运行完子程序功能后,采用RET返回指令回到主程序继续执行 4、中断指令
(1)中断INT n :执行类型n的中断服务程序,N=0~255(可管理256个中断,每个用一个中断号表示)
0号中断的中断服务子程序入口的入口地址0000H:0000H 1号中断的中断服务子程序入口的入口地址0000H:0004H 标志寄存器压入堆栈(SP-2) 清中断允许标志IF及单步标志TF
将当前程序断点的段地址入栈保护(SP-2) 将当前程序断点偏移地址入栈保护(SP-2) 将存放的地址为0:(n×4)处的中断服务子程序的入口地址从中断向量表中读出,将地址较低的两单元送入IP,地址较高的两个单元送入CS。CPU转入中断服务子程序 (2)溢出中断INTO (3)中断返回IRET
总是安排在中断服务程序的出口处
由它控制从堆栈中弹出程序断点送回CS和IP中,迫使CPU返回断点继续执行程序 五、处理器控制指令 1、标志位操作
(1)CF设置指令(清标志位)
26 / 66
微机原理与接口技术
CLC 0→CF STC 1→CF CMC CF变反 (2)DF设置指令
CLD 0→DF (串操作的指针移动方向从低到高)
STD 1→DF (串操作的指针移动方向从高到低) (3)IF设置指令 CLI 0→IF (禁止INTR中断) STI 1→IF (开放INTR中断) 2、 HLT(halt)
执行HLT指令后,CPU进入暂停状态(暂停) 执行NOP指令后,CPU延时,调试(空操作) 编程用:清零:(1)MOV AX, 0 (AX清零)
(2)ADD AL,0 (进位标志CF清零)
(3)AND AL,0FH (保留AL中低4位,高4位清0) OR AL, 0FH (保留高4位,对低4位置1)
(4)XOR AX,AX (5)SUB AX,AX
调整指令 调整指令名 DAA DAS AAA AAS AAM AAD 功能 压缩BCD码加法调整 压缩BCD码减法调整 非压缩BCD码加法调整 非压缩BCD码减法调整 乘法后的BCD码调整 除法前的BCD码调整 判断奇偶(1)用逻辑与,将出最低位外的其他位变为0,保留最低位不变,判断是否全为
0,是则为偶数,否则为奇数
(2)将最低位用移位指令移到CF,判断进位标志是否为0,是为偶数 (3)将最低位移位指令移至最高位(符号位),判断符号标志是0,则为偶数
第四章 8086汇编语言程序设计
第一节 伪指令(重点?)
程序的扩展名为.asm
CPU指令与伪指令之间的区别:
(1)CPU指令是给CPU的命令,在运行时由CPU执行,每条指令对应CPU的一种特定的操作。而伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。
(2)汇编以后,每条CPU指令产生一一对应的目标代码;而伪指令则不产生与之相应的目标代码。
十六进制: 3A5DH, 第一位为字母时前面加数字 一.常数,变量,标号 (1)标号
标号代表指令的起始地址 一般执行性语句格式 (标号:) 【前缀】 指令助记符 操作数 【注释】 伪指令语句格式
27 / 66
微机原理与接口技术
【名字】 伪指令助记符 【操作数】 【注释】 1、数据定义伪指令
(1)数据定义伪指令的一般格式为: ?[变量名] 伪指令 操作数[,操作数…] DB 用来定义字节(BYTE)
DW 用来定义字(WORD) DD 用来定义双字(DWORD) (2)操作数的类型可以是: ①常数或常数表达式 ?
?例如: DATA_BYTE DB 10H,5H,10H
分配3个连续字节单元,分别初始化为10H,5H,10H,其中第一个单元(10H),用DATA_BYTE表示
DATA_WORD DW 100H,3465H
分配了一个字单元,低地址单元(DATA)为65H,高地址单元(DATA+1)为34H ?问号“?”的表达式 例如: X DB 5,?,6
?号只是为了给变量保留相应的存储单元,而不赋予变量某个确定的初值。
?可以为字符串(定义字符串最好使用DB) 例如:DATA DB ‘ABCDE’
地址为DATA所指处连续分配5个字节单元空间,并按递增的顺序分别在各单元存放如下字符的ASCII码:‘A’?B?,?C?,?D?,?E? ?重复次数:N DUP(初值[,初值…]) ?例如:ZERO DB 2 DUP(3,5)
XYZ DB 2 DUP(0,2 DUP(1,3,5)
?在伪操作的操作数字段中若使用$,则表示的是地址计数器的当前值。 格式2:[变量名] 伪指令名 表达式1 DUP(表达式2) 用于定义重复的数据或分配一数据块空间.
28 / 66
共分享92篇相关文档