 
         
         
         
         
        版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六讲选择结构程序设计6.1分支程序设计的两种结构形式判定条件分支1分支2判定条件分支1分支2分支nYN…(1)(2)相当于C语言的if、else相当于C语言的switch()6.2与分支程序有关的指令1.无条件转移指令JMP1)段内直接短转移格式:JMP
SHORTOPR执行的操作:(IP)<-(IP)+8位位移量2)段内直接近转移格式:JMP
NEARPTROPR执行的操作:(IP)<-(IP)+16位位移量2.条件转移指令1)根据单个条件标志的设置情况转移JZ(或JE)(Jumpifzero,orequal)
结果为零(或相等)则转移格式:JE(或JZ)
OPR测试条件:ZF=1JNZ(或JNE)(Jumpifnotzero,ornotequal)结果不为零(或不相等)则转移格式:JNZ(或JNE)
OPR测试条件:ZF=01)根据单个条件标志的设置情况转移JS(Jumpifsign)
结果为负则转移格式:
JS
OPR测试条件:SF=1JNS(Jumpifnotsign)
结果为正则转移格式:JNS
OPR测试条件:SF=01)根据单个条件标志的设置情况转移JO(Jumpifoverflow)
溢出则转移格式:
JO
OPR测试条件:OF=1JNO(Jumpifnotoverflow)不溢出则转移格式:
JNOOPR测试条件:OF=01)根据单个条件标志的设置情况转移JP(或JPE)(Jumpifparity,orparityeven)奇偶位为1则转移格式:
JP
OPR测试条件:PF=1JNP(或JPO)(Jumpifnotparity,orparityodd)奇偶位为0则转移格式:
JNP(或JPO)
OPR测试条件:PF=03)比较两个带符号数,并根据比较的结果转移JL(或JNGE)(Jumpifless,ornotgreaterorequal)小于,或者不大于或者等于则转移JNL(或JGE)(Jumpifnotless,orgreaterorequal)不小于,或者大于或者等于则转移JLE(或JNG)(Jumpiflessorequal,ornotgreater)小于或等于,或者不大于则转移JNLE(或JG)(Jumpifnotlessorequal,orgreater)不小于或等于,或者大于则转移4)测试CX的值为0则转移指令JCXZ(JumpifCXregisteriszero)
CX寄存器的内容为零则转移格式:JCXZ
OPR测试条件:(CX)=06.2分支程序设计举例codesegmentassumecs:codeinput: movah,01h int21h cmpal,20h jzexit cmpal,61h jlinput cmpal,7bh jgeinput例1编写一个汇编语言程序,对键盘输入的小写字母用大写字母显示出来
subal,20h movdl,al movah,02h int21h jmpinputexit:movah,4ch int21hcodeendsend例2编写程序,从键盘接收一个小写字母,然后找出他的前导字母和后续字母,再按顺序显示这三个字符。codesegmentassumecs:codeinput: movah,07h int21h cmpal,20h jeexit cmpal,61h jlinput cmpal,7ah jginputprint:subal,01h movdl,al movah,02h int21haddal,01h movdl,al movah,02h int21h addal,01h movdl,almovah,02h int21h jmpinputexit:movah,4ch int21hcodeendsend例3将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL,BL,CL和DL中Datasegment
Xdb4dup(?)DataendsCodesegmentassumecs:code,ds:datastart:pushds
subax,ax
pushax
movax,data
movds,ax
movax,1234h
movcl,04h
movch,4
movsi,0
movdi,0repeat:rolax,cl
movbl,al
andbl,0fh
movx[si],bl
incsi
decch
jnzrepeat
moval,x
movbl,x[1]
movcl,x[2]
movdl,x[3]
retcodeendsendstart
jal2movah,a+2mova,ahmova+2,all2:moval,a+1cmpal,a+2jal3movah,a+2mova+2,almova+1,ahl3:movah,2movdl,aordl,30hint21hmovdl,a+1ordl,30hint21hmovdl,a+2ordl,30hint21hmovah,4chint21hcodendsendstart例5比较数组BUF中的三个16位补码,若三个数都不相等则显示0,有两个相等则显示1,都相等则显示2。假定三个数为a、b、c,D为比较结果STACK SEGMENT STACK DB200DUP(0)STACK ENDSDATA SEGMENTBUF DWa,b,cDATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN: MOVAX,DATA MOVDS,AX MOVDL,0 MOVAX,BUF ;a→AX CMPAX ;BUF+2;a=b? JNZ L1 INC DLL1: MOVBX ;BUF+2;b→BX CMPBX,BUF+4 ;b=c? JZL2 ;b=c转L2 CMPAX,BUF+4 JNZL3 ;a≠c转L3L2: INC DLL3: ADDDL,30H ;(DL)变为ASCII码
MOVAH,2 INT21H MOVAH,4CH INT21HCODE ENDS ENDBEGINL3L2L1NYYNYND=0a=b?D+1→Db=c?a=c?D+1→D显示D开始结束例6设A、B、C三个单元存放着三个数,若三个数都不为0,则求三数之和放在D单元内,若其中有一个为0,则将另外两个也清0。此题为判断A、B、C三个数是否为0的分支程序。存贮单元的分配,题目已告诉,变量名分别为A、B、C、D,都为字变量。STACK SEGMENT STACK DB200DUP(0)STACK ENDSDATA SEGMENTA DWaB DWbC DWcD DW?DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKBEGIN: MOVAX,DATA MOVDS,AX CMPA,0 JZL1 CMPB,0 JZL1 CMPC,0 JZL1 MOVAX,A ADDAX,B ADDAX,C MOVD,A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年一级建造师之一建水利水电工程实务题库综合试卷B卷附答案
- 2025年经济学专业技术资格(初级)备考题库及答案解析
- 培训安全操作规程试题及答案解析
- 2025年二级建造师《法规》真题及参考答案
- 2025年财务总监《财务管理与风险控制》备考题库及答案解析
- 铁渣处理工保密意识竞赛考核试卷含答案
- 中药调剂员岗前理论技术考核试卷含答案
- 海绵钛还原蒸馏工安全理论能力考核试卷含答案
- 白酒酿造工班组协作模拟考核试卷含答案
- 罐头封装工安全意识强化考核试卷含答案
- 全国主要水文站点及雨量观测分布和代码
- 华为经营管理-华为的研发管理(6版)
- 浙江省稽阳联谊学校2023-2024学年高三上学期11月联考语文试题含答案
- “工业控制系统安全培训课件”
- 人教版地理八年级上册知识点总结
- 青钢竹叶剑的文化传承与发展
- 电测应力应变实验课件ppt
- 战略地图及平衡计分卡课件
- 民航服务沟通PPT完整全套教学课件
- (鲁科版五四制)小学三四五年级全部单词(带音标)
- 中考模拟考试语文答题卡Word版可以编辑(全黑色)
 
            
评论
0/150
提交评论