《计原及汇编》ppt课件

上传人:xiao****1972 文档编号:74037937 上传时间:2019-01-26 格式:PPT 页数:84 大小:617.31KB
返回 下载 相关 举报
《计原及汇编》ppt课件_第1页
第1页 / 共84页
《计原及汇编》ppt课件_第2页
第2页 / 共84页
《计原及汇编》ppt课件_第3页
第3页 / 共84页
《计原及汇编》ppt课件_第4页
第4页 / 共84页
《计原及汇编》ppt课件_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《《计原及汇编》ppt课件》由会员分享,可在线阅读,更多相关《《计原及汇编》ppt课件(84页珍藏版)》请在金锄头文库上搜索。

1、一、程序设计步骤 1、分析问题,确定算法。 2、画出程序流程 3、正确、合理使用存储器和寄存器。 4、编写程序。 5、调试程序。,第9章 分支程序设计,顺序程序结构,第9章 分支程序设计,Z=10*(X+Y),;设置数据段 DATA SEGMENT X DW 20H ;变量X Y DW 12H ;变量Y Z DW ? ;变量Z DATA ENDS ;设置堆栈段 STACK1 SEGMENT PARA STACK DB 10H DUP(0) STACK1 ENDS ;设置代码段 CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA M

2、OV DS, AX MOV AX, X ADD AX, Y,SAL AX, 1 MOV BX, AX MOV CL, 2 SAL AX, CL ADD AX, BX MOV Y, AX MOV AH, 4CH INT 21H CODE ENDS END START,二、分支程序设计,短转移:(RD1127或RD2-128) JMP SHORT TARGET,1、无条件转移: JMP 目标,(1)直接寻址方式,段内转移,JMP TARGET,COSEG1 SEGMENT COSEG2 SEGMENT TARGET: JMP FAR PTR TARGET COSEG1 ENDS COSEG2 EN

3、DS,段内转移:JMP CX JMP WORD PTR BX 或 JMP BX 段间转移:JMP DWORD PTR BX,1、无条件转移: JMP 目标,(2)间接寻址方式,段间转移,2、条件转移,JXX 目标,条件转移指令及其判断条件,条件转移指令及其判断条件,分支程序设计举例 1、两分支程序设计方法 2、多分支程序设计方法,(1)条件转移法 (2)地址表法 (3)跳转表,二、分支程序设计,程序如下: TEST DA1, 01H JE NEXT INC DA1 NEXT: ,试编制一程序段,把DA1字节单元中数据变为偶数。,两分支程序设计方法,试编制一程序,实现两个存储区之间的数据传送。,

4、两分支程序设计方法,源程序如下: DATA SEGMENT ORG 20H STRING1 DB 5 DUP( ASSEMBLE LANGUAGE IS USEFUL) ORG $+20H ADDR1 DW STRING1+10H ;源空间首地址 ADDR2 DW STRING1+2 ;目的空间首地址 COUNT DW 10H ;待传送字节数 DATA ENDS STACK1 SEGMENT PARA STACK DB 30H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS,

5、AX MOV SI, ADDR1 ;将源空间的首地址存入SI寄存器中 MOV DI, ADDR2 ;将目的空间的首地址存入DI寄存器中 MOV CX, COUNT ;将传送的字节数存入CX寄存器中 CMP SI, DI ;将源空间与目的空间的首地址 JA FLAG2 ;如果源空间首地址大,从首地址开始传数,跳转相应程序 ADD SI, CX ;如果目的空间首地址大,需从末地址开始,形成末地址 ADD DI, CX,FLAG1: MOV AL, SI-1 ;本段程序实现从首地址开始传数 MOV DI-1, AL DEC SI DEC DI DEC CX JNE FLAG1 JMP FLAG3 F

6、LAG2: MOV AL, SI ;本段程序实现从末地址开始传数 MOV DI, AL INC SI INC DI DEC CX JNE FLAG2 FLAG3: MOV AH, 4CH INT 21H CODE ENDS END START,1、条件转移法,多分支程序设计方法,多分支程序设计方法,2、地址表法,入口地址=地址表首地址+(参数-1)2,实现程序如下: DATA SEGMENT NUM DB 4 ADDRTAB DW FLAG1, FLAG2, FLAG3, FLAG4, FLAG5 STRING1 DB HELLO WORLD!, 0AH, 0DH, $ STRING2 DB

7、I LOVE THIS GAME, 0AH, 0DH, $ STRING3 DB COMPUTER SCIENCE, 0AH, 0DH, $ STRING4 DB ASSEMBLE LANGUAGE, 0AH, 0DH, $ STRING5 DB COMPUTER ORGANIZATION, 0AH, 0DH, $ DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AH,0 M

8、OV AL, NUM,DEC AL SHL AL,1 MOV SI, AX MOV BX, ADDRESSTABSI ;取转移的入口地址 JMP BX ;跳转到对应的分支处理程序 FLAG1: MOV DX, OFFSET STRING1 JMP SHOW FLAG2: MOV DX, OFFSET STRING2 JMP SHOW FLAG3: MOV DX, OFFSET STRING3 JMP SHOW FLAG4: MOV DX, OFFSET STRING4 JMP SHOW FLAG5: MOV DX, OFFSET STRING5 JMP SHOW SHOW: MOV AH, 0

9、9H INT 21H MOV AH, 4CH INT 21H CODE ENDS END START,多分支程序设计方法,3、跳转表法,实现程序如下: DATA SEGMENT NUM DB 2 STRING1 DB HELLO WORLD!, 0AH, 0DH, $ STRING2 DB I LOVE THIS GAME, 0AH, 0DH, $ STRING3 DB COMPUTER SCIENCE, 0AH, 0DH, $ STRING4 DB ASSEMBLE LANGUAGE, 0AH, 0DH, $ STRING5 DB COMPUTER ORGANIZATION, 0AH, 0D

10、H, $ DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AH,0 MOV AL, NUM,DEC AL MOV BL,AL SHL AL,1 ADD AL,BL ADD AX, OFFSET JUMP_TAB JMP AX JUMP_TAB: JMP FLAG1 JMP FLAG2 JMP FLAG3 JMP FLAG4 JMP FLAG5 FLAG1: MOV DX, O

11、FFSET STRING1 JMP SHOW FLAG2: MOV DX, OFFSET STRING2 JMP SHOW,FLAG3: MOV DX, OFFSET STRING3 JMP SHOW FLAG4: MOV DX, OFFSET STRING4 JMP SHOW FLAG5: MOV DX, OFFSET STRING5 JMP SHOW SHOW: MOV AH, 09H INT 21H MOV AH, 4CH INT 21H CODE ENDS END START,第10章 循环程序设计,一、循环程序基本结构,循环程序结构,1、初始化部分 设置地址指针、计数器初值 2、工作

12、部分 3、修改部分 4、控制部分 用计数控制循环 用条件控制循环 5、结束处理部分,第10章 循环程序设计,二、循环控制方法,1、用计数控制循环 使用计数器,达到计数器预定值,循环结束。要求循环次数已知。 计数器可以递增、递减 可以选用寄存器、也可用存储单元,第10章 循环程序设计,用正计数法,计算数组ARRAY所有单元的和,DATA SEGMENT ARRAY DB 1,2,3,4,5,6,7,8,9,10 COUNT EQU $-ARRAY SUM DW ? DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE

13、 SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX XOR AX,AX ;AX寄存器清0,累加用 MOV CX,0 ;计数器CX清0 MOV SI, 0 ;数组指针清0,NEXT: ADD AL,ARRAYSI ;数组累加 INC SI ;数组指针后移 INC CX ;计数器加1 CMP CX,COUNT ;计数器值与循环次数比较 JL NEXT ;如果小于,继续循环 MOV BYTE PTR SUM,AL ;将累计和存入变量 MOV AH, 4CH INT 21H CODE ENDS END START,2、用条件

14、控制循环 找出一个终止循环的条件,每循环一次,对条件进行一次检测。满足终止循环的条件,退出循环,否则继续。 通常选用条件转移指令来控制循环是否结束。,二、循环控制方法,第10章 循环程序设计,编写程序,求解兔子繁殖问题,给出到指定只兔子数时,需要多少个月。,实现程序如下: DATA SEGMENT RABBITNUM DW 650 ;存放兔子只数 MONTHNUM DB ? ;存放月数 DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP (?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS, AX XOR CX,CX ;计数器清0 MOV AX,0 ;斐波那契数初始值 MOV BX,1,NEXT: XCHG AX,BX ADD AX,BX ;产生一个新的斐波那契数 INC CL ;计数器加1 CMP AX,RABBITNUM ;比较产生的新数与给定数 JAE RESULT ;如果大于或等于,结束 JMP NEXT ;小于,继续循环 RESULT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号