如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第七章汇编语言程序设计的基本方法和技巧可执行目标文件:“.EXE”7.2伪指令和宏指令1.符号定义伪指令等号语句符号名=表达式e.g.NUM=6…NUM=NUM+2注:与EQU区别在于符号名可以重新定义(1)数值常数:十进制、八进制、十六进制、二进制等,缺省形式是十进制;(2)字符常量,用单引号括起来,被存储的是该字符的ASCII码;(3)符号常量,必须是预先已定义的符号;(4)符号“?”,表示预留空间,内容不定;e.g.定义赋初值的变量xxDB1,-1,0fcHyyDW1,-1,0fcHzzDD1,-1,0fcHe.g.定义字符串变量(只能用DB定义)str1DB'TsingHua'str2DB'INPUT:',0dH,0aH,'$'e.g.利用DW伪指令可存放偏移地址,DD伪指令可存放偏移地址和段地址XXDWOFFSETXLISTDDLABELOFFSETX为XX在其段内的偏移地址LABEL为双字,一字为偏移地址,一字为段地址e.g.数据复制D1DB3DUP(11,?)D2DW2DUP(4,?)D3DB2DUP(‘AB’,2,DUP(8))3.段定义伪指令[组合类型]说明程序连接时的段合并方法[‘类别’]:不能与程序中变量、标号和其它符号名相同。汇编程序链接时只使同类别的段发生关联,并组成段组的名字,如‘STACK’,‘CODE’。例用程序实现1234H+5678H5.过程(子程序)定义伪指令6.模块定义伪指令7.定位伪指令二、宏指令语句e.g.实现两个八位二进制数相乘,结果送BX所指单元注意:宏调用前必须进行宏定义宏调用与子程序调用完全不同7.38086汇编语言程序设计的基本语法NEAR:标号只能做段内转移和段内调用的目标地址。FAR:标号只能做段间转移和段间调用的目标地址助记符由指令系统规定。定义符由汇编程序规定。都称为关键字或保留字,不能用作标号、名字、变量名。2.变量②MOD:除法取余SHL/SHR:逻辑左/右移,最右/左边以0补,当移位次数≧16时,结果恒为0(3)关系运算符EQ、NE、LT、LE、GT、GE②OFFSET符号名;求段内偏移量e.g.标号SLAB处于数据段,且与数据段基址的距离为10HMOVSI,OFFSETSLAB;(SI)=0010H⑤LENGTH符号名;求为符号名分配的项数SIZE、LENGH、TYPE之间的关系:SIZE符号名=(LENGTH符号名)*(TYPE符号名)e.g.对于“ABCDW100DUP(?)”TYPEABC;汇编结果为2LENGTHABC;汇编结果为100SIZEABC;汇编结果为200②THIS类型;指定新类型,规定它所定义的符号名和相邻的下一个语句的符号名具有相同的物理地址e.g.LABCEQUTHISBYTELABDDW1357H,2468HMOVAL,LABC;(AL)=57HMOVAX,LABD+1;(AX)=6813H7.4汇编语言程序设计的基本方法和技巧1.顺序程序设计DATA2.分支程序设计例比较两个一字节无符号数X1和X2的大小,把大数存入MAX单元。DATA3.循环程序设计(1)初始化部分这是循环的准备部分,为程序操作、地址指针、循环计数、结束条件等设置初始值。(2)循环体,包括以下3个部分:循环工作部分------这是循环程序的主体,完成程序的基本操作,循环多少次,这部分语句就执行多少次。循环修改部分-----修改循环工作部分的变量地址等,这保证每次重复时,参加执行的数据能发生有规律的变化。循环控制部分-----保证循环条件满足时进入循环;循环结束条件不满足时,退出循环,执行循环体外的后续语句。(3)循环结束部分完成循环结束后的处理,如数据分析、结果的存放等。例从XX单元开始的10个连续单元中存放有10个无符号数,从中找出最大者送入YY单元。DATA7.7IBM-PC-DOS系统的功能调用2.注意问题2.单字符显示输出(2号调用)功能号02H入口参数DL=待显示字符的ASCII码该功能从标准输出设备显示器上输出显示一个字符。如显示字母“A”:MOVDL,‘A’MOVAH,02HINT21H4.终止程序,返回DOS(0号调用)功能号00H,无入口参数该功能退出用户程序并返回操作系统。MOVAH,00HINT21H6.字符串显示输出(9号调用)功能号09H入口参数:DS:DX指向字符串的首地址该功能完成在标准输出设备显示器上输出显示一字符串,该字符串必须以字符“$”(24H)为结束标志,但“$”字符不显示。e.g.在屏幕上显示“OK”ABCDB‘OK$’;字符串以“$”字符做结束标志,但不显示MOVDX,SEGABC;将ABC段基址送DX