资源描述:
《Chapter 6 汇编语言程序设计hppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章汇编语言程序设计主讲:胡文静博士概述汇编语言源程序格式:助记符指令一般包含4个部分,其一般组成形式为:[标号][:]助记符[操作数][;注释]书写格式规则详见P138,①②③④⑤⑥!标号—所有汇编指令和大多数汇编伪指令前面都可以带有标号;必须从第一列开始书写;最多32个字符;由字母、数字、下划线和$组成,且不能以数字开头;分大小写;冒号不属于标号名;没有标号的源语句第一列必须为空格、星号或分号。助记符—不能从第一列开始,否则被认为是标号;指令助记符一般用大写;汇编伪指令一般为小写,且以“.”开头。操作数—操作数列表,可以是常数、符号或常数与符号构成的表达
2、式。操作数间需用“,”号隔开;三种前缀形式:#,*,@。7/27/20212数据类型举例二进制10011000B,01111010b(最多16位)八进制226q,1001Q,0124(多达6位)十进制略十六进制0DH,123H,0X89,0x0D(多达4位)浮点数1.786e9(浮点数仅在C语言使用)字符常数‘a’,’b’…字符串“example”常数与字符串7/27/20213类型含义标号符号地址(可作为.global,.ref,.def的操作数)局部标号$n,name?(临时性的标号,.newblock,.sect,.text,.data,.include
3、,.copy取消)符号常数.set,.struct/.tag/.endstruct(提高可读性)预定义符号常数$,寄存器符号,其他…替代符号符号替代变量,.asg“high”,AR2(可重新定义)标号7/27/20214举例7/27/20215序号符号运算操作求值顺序1+-~!取正、取负、按位求补、逻辑负从右至左2*/%乘法、除法、求模从左至右3+-加法、减法从左至右4^指数从左到右5<<>>左移、右移从左至右6<<=小于、小于等于从左至右7>>=大于、大于等于从左至右8!==不等于、等于从左至右9&按位与运算从左至右10∧按位异或运算从左至右11
4、按位或运算
5、从左至右汇编语言表达式7/27/20216有效定义表达式:7/27/20217有效定义表达式7/27/20218堆栈操作7/27/20219分类指令说明无条件分支转移B[D]用该指令指定的地址加载PCBACC[D]用累加器的低16位指定的地址加载PC条件分支转移BC[D]若满足指令给定条件,用该指令指定的地址加载PCBANG[D]若当前选择辅助寄存器不等于0,用该指令指定的地址加载PC远程分支转移FB[D]用该指令指定的地址加载PC和XPCFBACC[D]用累加器的低23位指定的地址加载PC和XPC控制程序7/27/202110分类指令说明无条件调用CALL[
6、D]将返回的地址压入堆栈,并用该指令指定的地址加载PCCALA[D]将返回的地址压入堆栈,用累加器A或B指定的地址加载PC条件调用CC[D]如果满足指令给定条件,将返回的地址压入堆栈,并用该指令指定的地址加载PC远程调用FCALL[D]将XPC和PC压入堆栈,并用该指令指定的地址加载PC和XPCFCALA[D]将XPC和PC压入堆栈,用累加器的低23位指定的地址加载PC和XPC分支操作7/27/202111分类指令说明无条件返回RET[D]将堆栈顶部的返回地址加载到PC。RETE[D]将堆栈顶部的返回地址加载到PC,并使能可屏蔽中断。RETF[D]将RTN寄存
7、器中的返回地址加载到PC,并使能可屏蔽中断。条件返回RC[D]如果满足指令给定条件,将堆栈顶部的返回地址加载到PC。远程返回FCALL[D]将堆栈顶部的值弹出加载到XPC,将堆栈中下一个值弹出加载到PC。FCALA[D]将堆栈顶部的值弹出加载到XPC,将堆栈中下一个值弹出加载到PC,并使能可屏蔽中断。分支操作7/27/202112操作符号条件说明操作符号条件说明AEQA=0累加器A等于0AOVAOV=1累加器A溢出BEQB=0累加器B等于0BOVBOV=1累加器B溢出ANEQA0累加器A不等于0ANOVAOV=0累加器A不溢出BNEQB0累加器B不等于0B
8、NOVBOV=0累加器B不溢出ALTA<0累加器A小于0CC=1ALU进位位置1BLTB<0累加器B小于0NCC=0ALU进位位置0ALEQA0累加器A小于等于0TCTC=1测试/控制标志位置1BLEQB0累加器B小于等于0NTCTC=0测试/控制标志位置0AGTA>0累加器A大于0BIOBIO低BIO信号电平为低BGTB>0累加器B大于0NBIOBIO高BIO信号电平为高AGEQA0累加器A大于等于0UNC无无条件操作BGEQB0累加器B大于等于0分支操作7/27/202113循环操作.title"Ex534.asm".mmregsstack.use
9、ct"STACK",10h.bssx,