- 4
- 0
- 约8.01千字
- 约 18页
- 2018-01-28 发布于河北
- 举报
汇编语言——第4章 程序设计方法.doc
第4章 程序设计方法
4.1 概述
4.1.1 汇编语言程序设计的一般步骤
汇编语言程序设计一般有以下几个步骤:
1.分析问题,
确定算法
2. 绘制流程图
3. 根据流程图编制程
4. 分配存储器和寄存器
5.写源程序
6.调试程序
4.1.2 流程图
1.流程图的概念
流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。
2.流程图符号表示
(1)起止框:表示程序的开始和结束。
(2)判断框
(3)处理框
(4)调用框
(5)指向线
(6)连接框
4.2 顺序程序设计
下面举例说明顺序程序的设计。
【例4.1】试编写一程序计算以下表达式的值。
w=(v-(x*y+z-540))/x
式中x、y、z、v均为有符号字数据。
设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图4.1所示。
源程序如下:
DATA SEGMENT
X DW 200
Y DW 100
Z DW 3000
V DW 10000
W DW 2 DUP(?)
DATA ENDS
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
START: MOV AX,DATA
MOV DS,AX ;DATA→AX
MOV AX,X
IMUL Y ;(X)*(Y)→DX:AX
MOV CX,AX
MOV BX,DX ;(DX:AX)→(BX:CX)
MOV AX,Z
CWD ;(Z)符号扩展
ADD CX,AX
ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX)
SUB CX,540
SBB BX,0 ;(BX:CX)-540→(BX:CX)
MOV AX,V
CWD ;(V)符号扩展
SUB AX,CX
SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX)
IDIV X ;(DX:AX)/X
MOV W,AX ;商→W
MOV W+2,DX ;余数DX→W+2
MOV AH,4CH
INT 21H
CODE ENDS ;退出DOS 状态
END START
【例4.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下:
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
TAB DB 80,85,86,71,79,96
DB 83,56,32,66,78。84
NO DB 10
ENGLIST DB?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
BEGIN: MOV AX,DATA
MOV DS ,AX
LEA BX,TAB
MOV AL,NO
DEL AL
XLAT TAB
MOV ENGLISH,AL
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
分支程序设计
4.3.1 用条件转移指令实现程序分支
【例4.3】编写计算下面函数值的程序:
1 X>0
Y= 0 X=0
-1 X0
设输入数据为X、输出数据Y,且皆为字节变量。程序流程图如图4.2所示。
程序如下:
DATA SEGMENT
X DB -10
Y DB ?
DATA ENDS
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START: MOV AX,DATA
MOV DS,AX
CMP X,0 ;与0进行比较
JGE A1 ;X≥0转A1
MOV Y,-1 ;X <0时,-1→Y
JMP EXIT
A1: JG A2 ;X>0转A2
MOV Y,0 ;X=0时,0→Y
JMP EXIT
A2: MOV Y,1 ;X>0,1→Y
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
【例4.4】试编一程序,求三个带符号字数据中的最大
原创力文档

文档评论(0)