- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计的基本方法
汇编语言程序中,最常见的几种程序结构形式:顺序程序、分支程序、循环程序、子程序。
转移指令
分支程序的设计
循环程序设计,循环指令
堆栈的概念,进栈、出栈指令
子程序的定义、调用、返回;主程序与子程序的参数传递
转移指令
特点:改变程序的执行顺序,即改变了指令指示器IP的内容。
条件转移
功能:由上一条指令所设的条件码来判别测试条件,满足条件则转移到指令所指地址去执行,否则循环执行。
满足条件时,当前(IP)+符号扩展到16位的位移量→IP。位移范围在-128~127之间。
根据标志位转移
CF标志:JC / JNC
JC表示:CF=1时转移。例如两数相减,低于。
JNC表示:CF=0时转移。例如两数相减,高于或等于。
ZF标志:JZ / JNZ
JZ表示:结果为0,转移,此时ZF=1。
JNZ表示:结果不为0,转移,此时ZF=0。
SF标志:JS / JNS
JS表示:结果为负,转移,此时SF=1。
JNZ表示:结果不为正,转移,此时SF=0。
OF标志:JO /JNO
JO表示:结果溢出,转移,此时OF=1。
JNO表示:结果不溢出,转移,此时OF=0。
PF标志:JP / JNP或JPE / JPO
JP表示:低8位中1的个数为偶数时转移,此时OF=1。
JNP表示:低8位中1的个数为奇数时转移,此时OF=0。
如:两数相加,结果为0,则转移到P2,否则运行P1。
无符号数的条件转移
此指令跟在比较指令之后,比较的对象为无符号数。结果有:高于、高于等于、低于、低于等于。
Above:高于,below:低于,equal:等于。
JA / JNBE
JA表示:高于则转移。
JNBE表示:不低于或等于转移。
测试条件:CF∨ZF=0。
(分析:a-b≥0,此时CF=0;a-b≠0,此时ZF=0。)
JAE / JNB
JAE表示:高于等于则转移。
JNB表示:不低于则转移。
测试条件:CF=0或ZF=1。
JB / JNAE
JB表示:低于则转移。
JNAE表示:不高于且不等于则转移。
测试条件:CF=1。
JBE / JNA
JBE表示:低于等于则转移。
JNA表示:不高于则转移。
测试条件:CF∨ZF=1。
带符号数条件转移
比较结果分为4种:大于、大于等于、小于、小于等于。
Great:大于,Little:小于,Equal:等于。
JG / JNLE
JG表示:两数相比,大于,则转移。
JNLE表示:两数相比,不小于且不等于,则转移。
测试条件:(SFOF)∨ZF=0。
JGE / JNL
JGE表示:两数相比,大于等于,则转移。
JNL表示:两数相比,不小于,则转移。
测试条件:SFOF=0。
JL / JNGE
JL表示:两数相比,小于,则转移。
JNGE表示:两数相比,不大于且不等于,则转移。
测试条件:SFOF=1。
JLE / JNG
JLE表示:两数相比,小于等于,则转移。
JNG表示:两数相比,不大于,则转移。
测试条件:(SFOF)∨ZF=1。
使用转移指令时应注意:
注意:
CMP比较指令本身无法分别有、无符号数,它比较的是否有符号,由后面的转移指令确定。
例:
若将JG换为JA,就变成无符号数了,此时,(AL)=(-40H)补=C0H>50H,转移。
转移指令的转移范围-128~127。
无条件转移指令
功能:无条件地转移到目的地址执行。可以分为两类:段内、段间。
段内直接近转移
格式:JMP NEAR PTR 标号;
功能:(IP)+16位偏移量→IP。转移范围32K。
段内间接转移
格式:JMP WORD PTR OPD;
功能:(OPD)→IP。
如:JMP WORD PTR [BX+TABLE]
作用:([BX+TABLE])→IP,偏移地址[BX+TABLE]所指单元的内容送IP。
假定:(DS)=2000H,(BX)=1256H,TABLE=20A1H,(232F7H)=3280H。
则:PA = (DS)左移4位+(BX)+TABLE = 232F7H
执行后:(IP)=3280H
段间直接转移
格式:JMP FAR PTR 标号;
功能:标号的偏移地址→IP,标号所在段地址→CS。
如:
段间间接转移
格式:JMP DWORD PTR OPD
功能:(OPD)→IP,(OPD+2)→CS。
如:JMP DWORD PTR [BX]
([BX])→IP,([BX]+2)→CS。注意是偏移地址[BX]所指内容。
分支程序设计
特点:计算机根据不同情况自动作出判断,有选择地执行相应处理程序。
两种结构形式
结构特点:运行方向是向前的,条件确定,只能执行分支中的一个。
程序设计方法
程序分支一般用条件转移指令产生,不同条件是通过FLAGS的标志状态反映出来。注意
文档评论(0)