




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,3.3 顺序程序设计 3.4 分支程序设计 3.5 循环程序设计 3.7 子程序设计,2,3.3 顺序程序设计,3,例3.5 编程计算(W1-(W2*W3+W4-5000)/5-W6。式中Wi=16)均为符号字变量。,W1 DW 15000 W2 DW 500 W3 DW 800 W4 DW 30000 W5 DW 4000 W6 DW 2 DUP(?) MOV AX,W2 IMUL W3 MOV BX,AX MOV CX,DX MOV AX,VV4 CWD ADD BX, AX ADC CX, DX,SUB BX, 5000 SBB CX, 0 MOV AX,W1 CWD SUB AX,
2、BX SBB DX,CX IDIV W5 MOV W6,AX M()V W6+2, DX,4,例3.6 从键盘上键人09中任一自然数N,将其立方值送显示器显示。,data segment INPUT DB PLEASE INPUT N(O9):$ LFB DB 0$ 1$ 8$ 27$ 64$125$216$343$512$729$ N DB ? data ends MOV DX, OFFSET INPUT MOV AH,9 1NT 21H MOV AH,1 INT 21H,5,MOV N,AL MOV AH,2 MOV DL, OAH INT 21H MOV DL,N AND DL,0FH
3、MOV CL,2 SHL DL,CL MOV DH,0 ADD DX,OFFSET LFB MOV AH,9 INT 21H,6,例3.7 两个32位无符号数的乘法程序。,7,3.4 分支程序设计,8,无条件转移指令 条件转移指令 分支程序设计举例,转移指令的实质:改变IP(或CS)的内容。所有转移指令不会影响标志位。分为无条件转移和条件转移两种。,9,(1) 无条件转移指令 - JMP 本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。根据设置CS、IP的方法,JMP指令分成4种情况。 段内直接转移: 指令中给出的8/16位的位移量加到IP。CS保持不变。 段内间接转移: REG
4、/MEM中的16位偏移地址送IP。CS保持不变。 段间直接转移 指令中给出的16位的段和16位的偏移地址送到CS和IP。 段间间接转移 MEM中给出的16位的段和16位的偏移地址送到CS和IP。,10,转移的目标地址由指令直接给出。 位移量 转移范围 汇编语言中格式 8位 -128+127 JMP SHORT OPRD 16位 -32768+32767 JMP NEAR PTR OPRD 例:JMP0120H ;直接转向0120H JMPSHORT LPI ;转向LPI JMPNEAR PTR BBB;转向BBB 由于是段内转移,故转移后CS内容保持不变, 段内直接转移,11,段内间接转移 转
5、移的目标地址由寄存器或存储单元的内容给出。 例1:JMP SI 若指令执行前(SI)=1200H,则指令执行后,(IP)=1200H,于是转向代码段的偏移地址1200H处执行。 注意:目标地址以段内偏移的形式给出,而不是相对于IP的位移量,所以它是一个16位的操作数。,12,例2:JMP BX+DI 设指令执行前: (DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H; 则指令执行后:(IP)=2350H 在汇编语言中,段内间接寻址通常写成: JMPWORD PTRBX+DI 表示所取得的目标地址是一个字。,13,段间直接转移 在指令中直接给出要转移
6、到的目的段地址和偏移地址。 例:JMP2000:1000H 执行时,(IP)1000H,(CS)2000H 注:直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符FAR PTR。 例:JMPFAR PTR far_label 其中的far_label为远类型的标号。,14,转移的目的地址(段和偏移)在两个相邻的字存储单元中。例如: JMPDWORD PTRSI 设指令执行前:(DS)=4000H,(SI)=1212H, (41212H)=1000H,(41214H)=4A00H 则指令执行后:(IP)=1000H,(CS)=4A00H 于是转到4B000H处开始执行指令。 例中的D
7、WORD PTR表示转移地址是一个双字。,段间间接转移,15,4000,1212,+),41212,DS,SI,00,10,00,4A,41212 41213 41214 41215,1000,4A00,IP,CS,段间间接转移操作示意图,11111111,11101100,JMP DWORD PTR SI的机器码,DS:SI,16,条件转移指令可实现程序的条件分支。 条件转移指令根据标志位的状态来决定是否进行分支转移。 格式: JXX label;xx为条件名称缩写 指令的转移范围为-128+127字节。,(2)条件转移指令 - JXX,17, 根据单个标志位设置的条件转移指令 JB/JC
8、;低于,或CF=1,则转移 JNB/JNC/JAE ;高于或等于,或CF=0,则转移 JP/JPE ;奇偶标志PF=1(偶),则转移 JNP/JPO ;奇偶标志PF=0(奇),则转移 JZ/JE ;结果为零(ZF=1),则转移 JNZ/JNE ;结果不为零(ZF=0),则转移 JS ;SF=1,则转移 JNS ;SF=0,则转移 JO ;OF=1,则转移 JNO ;OF=0,则转移,18,这类指令主要用来判断两个数的大小。 判断无符号数的大小 JA 高于则转移 条件为: CF=0ZF=0,即AB JNA/JBE 低于或等于则转移 条件为: CF=1ZF=1,即AB, 根据组合条件设置的条件转移
9、指令,19,JG ;大于则转移(AB) 条件为: (SFOF=0)ZF=0 JGE ;大于或等于则转移(AB) 条件为: (SFOF=0)ZF=1 JLE ;小于或等于则转移(AB) 条件为: (SFOF=1)ZF=1 JL ;小于则转移(AB) 条件为: (SFOF=1)ZF=0,判断有符号数的大小,20,(3)分支程序设计举例例1:以十六进制数形式显示BX中的内容。,MOVBX, 1234H MOVCH, 4 ; CH做循环计数器 ROT: MOVCL, 4; CL做移位计数器 ROLBX, CL; 将最高4位移到低4位 MOVAL, BL ANDAL, 0FH; 取出低4位 ADDAL,
10、 30H; 转换为ASCII码 CMPAL, 39H; 与 9 比较 JBE DISP; 若(AL)9, 则转显示 ADDAL, 7; 若(AL)9, 再加7转为A-F DISP: MOVDL, AL; (DL)字符 MOVAH, 2 INT21H; 显示输出 DECCH; 4个十六进制数显示完否? JNZROT; 没有, 循环 MOVDL, 48H; H MOVAH, 2 INT21H; 最后显示H,21,例2:某工厂的产品共有8种加工处理程序P0P7,而某产品应根据不同情况,作不同的处理,其选择由键入的值07来决定。若键入07以外的键,则退出该产品的加工处理程序。,INPUT DB INP
11、UT(07):$ AGAIN:MOV DX,OFFSET INPUT MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,0 JE P0 CMP AL,1 JE Pl CMP AL,7 JE P7 RET,P0: JMP AGAIN P7: JMP AGAIN,22,23,data segment INPUT DB INPUT(07):$ PTAB DW P0,P1,P2,P3,P4,P5,P6,P7 data ends AGAIN:MOV DX,OFFSET INPUT MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,0 JB
12、EXIT CMP AL,7, JA EXIT AND AX,0FH ADD AL,AL,MOV BX,AX JMP PTABBX EXIT: RET P0: JMP AGAIN P7: JMP AGAIN,24,3.5 循环程序设计,25,26,27,(2)循环控制指令,用在循环程序中以确定是否要继续循环。 循环次数通常置于CX中。 转移的目标应在距离本指令-128+127的范围之内。 循环控制指令不影响标志位。,28,(1)LOOP 格式:LOOP label 操作:(CX)-1CX; 若(CX)0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 LOOP指令与下面的指令段
13、等价: DEC CX JNZ label (2)LOOPZ (LOOPE) 格式:LOOPZ label 操作:(CX)-1CX; 若(CX)0ZF=1,则转至label处执行; 否则退出循环,执行LOOP后面的指令。,29,(3)LOOPNZ (LOOPNE) 格式:LOOPNZ label 操作:(CX)-1CX; 若(CX)0ZF=0,则转至label处执行; 否则退出循环,执行LOOP后面的指令。 (4)根据CX内容来决定是否转移的转移指令 JCXZ label 若(CX)=0,则转移到label处开始执行。,30,举例:,例1:给1A000H开始的256个内存单元均减去1,若 发现某
14、个单元减为0则立即退出循环,其后的单元不再减1。 MOV AX,1A00H MOV DS,AX MOV DI,0 MOV CX,256 GOON: DEC BYTE PTRDI INC DI CMP BYTE PTRDI-1,0 LOOPNZ GOON HLT,31,例2:在8000H开始的长度为1000字节的字符串中查找S,若找到,把其偏移地址记录在ADDR中,否则ADDR单元置为0FFFFH。 MOV DI,8000H MOV CX,1000 MOV AL, S MOV ADDR,0FFFFH GOON: SCASB LOOPNZ GOON JNZ DONE DEC DI MOV ADDR
15、,DI DONE: HLT,32,(3)单重循环程序举例,1. 计算Z=X+Y其中X和Y是双字变量。,data Segment X DD 752028FFH Y DD 9405ABCDH Z DB 5 DUP (?) data ends,33,34,2. 编写将某数据区中的十六进制数加密的程序,每个数字占一个字节。,35,36,3.多位非压缩BCD数与一位非压缩BCD数相乘。,data Segment FIRST DB 08H,06,02H COUNT EQU $-FIRST SECOND DB 05H THIRD DB COUNT+1 DUP (?) data ends,37,38,(4)条
16、件控制的循环程序举例,4. 将存储器中16位无符号二进制数转换成十进制数,送显示器显示出来。,data Segment BINARY DW 55H OBUF DB 6 DUP (?) data ends,39,40,(5)双重控制的循环程序举例5. 已知字节变量BUF存储区中存放着以0DH(回车的ASCII码)结束的十进制数的ASCII码。编程检查该字节变量存储区中有非十进制数,若有显示“ERROR”;若无则统计十进制数的位数(小于100)并送显示器显示。,data segment BUF DB 345678 , 0DH OBUF DB 3 DUP (?) ERR DB ERROR $ dat
17、a ends MOV AX,0 MOV BX,0 AGAIN: CMP BUFBX,0DH JE DONE,CMP BUFBX ,0 JB ERROR CMP BUFBX, 9 JA ERROR INC AL AAA INC BX JMP AGAIN,41,DONE: OR AX, 3030H MOV OBUF + 1 ,AL MOV OBUF,AH MOV OBUF + 2, $ MOV DX, OFFSET OBUF MOV AH, 9 INT 21H RET ERROR:MOV DX, OFFSET ERR MOV AH, 9 INT 21H ret,42,43,(6)多重循环程序设计举
18、例6. 编制将字节变量BUF存储区中存放的n个无符号数排序的程序。,data segment BUF DB 20,19, ,250 COUNT EQU $-BUF data ends,44,MOV SI, OFFSET BUF MOV DX,COUNT- 1 OUTSID: MOV CX, DX PUSH SI MOV AL, SI INSIDE: INC SI CMP AL, SI JNC NEXCHG XCHG SI ,AL NEXCHG:LOOP INSIDE POP SI MOV SI ,AL INC SI DEC DX JNZ OUTSID ret,逐一比较法 :,45,MOV DX, COUNT- 1 MOV AH,1 OUTSID MOV SI, OFFSET BUF MOV CX,DX INSIDE. MOV AL, SI INC SI CMP AL, SI JNC NXCHG XCHG AL, SI MOV SI- 1 ,AL MOV AH,2 NXCHG: LOOP INSIDE DEC DX DEC AH JNZ OUTSID ret,两两比较法 :,46,7. 已知mn矩阵A的元素aij按行序存放在存储区中,试编写程序求每行元素之和Si。,data segment A DB 11H, 12H,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影视技术与创新
- 英语考试试卷及答案
- 企业团队能力培训课件
- 铲车操作培训及就业保障合同范本
- 餐厅厨师劳动合同与职业健康管理
- 餐饮业店铺租赁合同范本及食品安全责任协议
- 房屋抵押典当业务合同范本
- 小区地漏定期检查方案
- 工厂店铺定向选址方案
- 智能家居产品保密及信息安全合同
- 2025至2030中国油气3D打印行业调研及市场前景预测评估报告
- 2024年绥阳县选聘城市社区工作者笔试真题
- 公文写作技能题库及答案
- 2025年广东省中考语文试卷真题(含答案解析)
- 辽宁省“三支一扶”招募考试真题2024
- 2025中国内地薪酬指南-kos高奥士国际-202506
- 算法歧视的法律规制-洞察及研究
- 检验表4.15 灌砌石或大块石理灌护坡单元工程施工质量检验表
- 2024《煤矿安全生产标准化管理体系基本要求及评分方法》掘进专业标准条款解读
- 胸痛中心的常态化质控与持续质量改进
- 核设施老化管理-洞察及研究
评论
0/150
提交评论