每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 第5章程序设计及汇编语言 信息与通信工程学院
第 5 章 程序设计及汇编语言
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 内容安排 程序设计步骤 二.程序设计 汇编语言及汇编程序 四.汇编语言源程序格式及实例 五.上机操作 信息与通信工程学院
内容安排 一. 程序设计步骤 二. 程序设计 三. 汇编语言及汇编程序 四. 汇编语言源程序格式及实例 五. 上机操作
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY §51程序设计步骤 开始 (1)分析问题 处理 (2)建立数学模型 处理 (3)确定算法 (4)绘制程序流程图 是 分支 (5)内存空间分配 否 (6)编制程序与静态检查 处理 (7)程序调试(实验) 结束 信息与通信工程学院
§5.1 程序设计步骤 (1)分析问题 (2)建立数学模型 (3)确定算法 (4)绘制程序流程图 (5)内存空间分配 (6)编制程序与静态检查 (7)程序调试(实验) 开始 结束 处理 处理 处理 分支 是 否
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY §52程序设计 1.简单程序 特点:计算机执行程序的方式是“从头到尾”逐条执行 指令语句,直至程序结束 例5-1:用数据运算指令,对两个16位数做加法运算。这 两个数从地址10050H开始连续存放,低位在小地址 端,结果存放在这两个数之后 信息与通信工程学院
§5.2 程序设计 特点:计算机执行程序的方式是“从头到尾”逐条执行 指令语句,直至程序结束 1. 简单程序 例5-1:用数据运算指令,对两个16位数做加法运算。这 两个数从地址10050H开始连续存放,低位在小地址一 端,结果存放在这两个数之后
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 流程图: 〔开始 初始化 加数→AX 被加数+加数→AX AX→10054H和10055H单元 〔暂停〕 信息与通信工程学院
流程图: 开始 暂停 AX 10054H和10055H单元 被加数+加数 AX 初始化 加数 AX
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 程序: MOV AX,1000H MOV DS.AX ;DS=1000H MOV SI5OH ;被加数指针Sl=50H MOV DL52H ;加数指针DI=52H MOV BX.54H ;和的指针BX=54H CLC ;清CF XOR AXAX ;清AX MOV AX,SI ;取一个字到AX ADC AX,DI ;AX←AX+DI+CF MOV BXAX ;存一个字到BX HLT ;暂停 信息与通信工程学院
MOV AX,1000H MOV DS,AX ;DS=1000H MOV SI,50H ;被加数指针SI=50H MOV DI,52H ;加数指针DI=52H MOV BX,54H ;和的指针BX=54H CLC ;清CF XOR AX,AX ;清AX MOV AX,[SI] ;取一个字到AX ADC AX,[DI] ;AX←AX+[DI]+CF MOV [BX],AX ;存一个字到[BX] HLT ;暂停 程序:
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 例5-2:将内存10050H单 开始 元的內容拆成两段, 每段4位,并将它们分 初始化 别存入内存1005H和 10052H单元。即 用间址方法取数→AI 10050H单元中的低4位 放入10051H的低4位, 用逻辑与指令将该数“与”0FH 取得低四位,存入内存10051H单元 10050H单元中的高4位 放入10052H的低4位, 再取出原始数→A 而10051H和10052H的 高4位均为零 逻辑右移得高4位,存入内存10054单元 暂停 流程图: 信息与通信工程学院
例5-2:将内存10050H单 元的内容拆成两段, 每段4位,并将它们分 别存入内存10051H和 10052H单元。即 10050H单元中的低4位 放入10051H的低4位, 10050H单元中的高4位 放入10052H的低4位, 而10051H和10052H的 高4位均为零 流程图: 开始 暂停 逻辑右移得高4位,存入内存10052H单元 用逻辑与指令将该数“与”0FH 取得低四位,存入内存10051H单元 初始化 用间址方法取数 AL 再取出原始数 AL
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 程序 MOV AX,1000H MOV DSAX ;DS=1000H MOV SI50H ;需拆字节的指针S-=50H MOV AL,SII ;取一个字节到AL中 AND AL.OFH ;把AL的前4位清0 MOV ISH+1],AL;把得到的后4位放到10051H单元 MOV AL,ISII ;再取出需拆字节放到AL中 MOV CL. 4 SHR AL. CL ;逻辑右移四次,前4位补0 MOV SH+2,AL;放入10052H单元 HLT 信息与通信工程学院
程序: MOV AX,1000H MOV DS,AX ;DS=1000H MOV SI,50H ;需拆字节的指针SI=50H MOV AL,[SI] ;取一个字节到AL中 AND AL,0FH ;把AL的前4位清0 MOV [SI+1],AL ;把得到的后4位放到10051H单元 MOV AL,[SI] ;再取出需拆字节放到AL中 MOV CL,4 SHR AL,CL ;逻辑右移四次,前4位补0 MOV [SI+2],AL ;放入10052H单元 HLT
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 2.分支程序 利用条件转移指令,使程序执行到某一指令后,根据 条件(即上面运算的情况)是否满足,改变程序执行 的次序 特点:先用比较指令、数据操作、位测指令等改变标志 寄存器各个标志位,然后用条件转移指令进行分支 例5-3:求AX累加器和BX寄存器中两个无符号数之差的 绝对值,结果放在内存2800H单元中 流程图: 信息与通信工程学院
2. 分支程序 利用条件转移指令,使程序执行到某一指令后,根据 条件(即上面运算的情况)是否满足,改变程序执行 的次序 特点:先用比较指令、数据操作、位测指令等改变标志 寄存器各个标志位,然后用条件转移指令进行分支 例5-3:求AX累加器和BX寄存器中两个无符号数之差的 绝对值,结果放在内存2800H单元中 流程图:
每)天半紫大学 IIANJIN POLYTECHNIC UNIVERSITY 开始 初始化:清除CF AX-BX AX AX-BX≥0否 是 B内存(2800H)和(2801H)单元 AX→内存(2800H)和(2801H)单元 暂停 信息与通信工程学院
开始 初始化:清除CF AX-BX AX AX-BX≥ 0? AX 内存(2800H)和(2801H)单元 BX-AX BX BX 内存(2800H)和(2801H)单元 暂停 是 否