当前位置:文档之家› 3汇编语言程序设计基础3PPT课件

3汇编语言程序设计基础3PPT课件


AL,XX AL,0 BIGR AL,0FFH YY,AL
EQUL AL,1 YY,AL
START
§4.4循环程序设计
循环程序是强制CPU重复执行某一指令系列的一种程 序结构形式,它可以使许多重复工作的程序大为简化, 而且减少内存空间。被重复执行的部分称作循环体,要 想把循环体多次执行,就必须在循环体的前后有相应的 指令实现循环控制。 循环程序一般由4部分组成: 初始化、循环体、循环控制和循环结束处理
循环程序分为单循环和多重循环,两重以上 循环称为多重循环
开始
初始化
循环体
循环控制
判断


结束处理
结束
开始
外循环初始化
内循环初始化
内循环体

内控制

外循环体
外控制


结束
【例3-5】现将以AREA1为首地址的100个字节数据搬移 到以AREA2为首地址的内存中去。
程序如下:
DATA SEGMENT
3.3 汇编语言程序设计基础
【本节重点】熟练掌握汇编语言的四种程序设计方法: 顺序程序设计,分支程序设计,循环程序 设计以及子程序设计。
【本节难点】确定算法,合理分配内存工作单元。
§3.3.1 汇编语言程序设计概述
1 汇编语言程序设计步骤
使用汇编语言设计一个程序大致上可分为以下几个步 骤。
(1) 分析问题,明确要求。解决问题之前,首先要明确 所要解决的问题和要达到的目的、技术指标等。
DL,BL
AH,2
21H ;输出十位数
DL,BH
21H ;输出个位数
AH,4CH
21H ;返回DOS
MAIN ;程序结束
§3.3.3分支程序设计
分支程序是利用条件转移指令,使程序执行到某一 指令后,根据条件是否满足,来改变程序执行的次 序。在程序设计中经常会遇到各种判断和比较,例 如“相等”和“不相等”;“正”和“负”;“大 于”和“小于”;“满足条件”和“不满足条件” 等等,这些判断和比较在程序中都可以组成各种不 同的逻辑框,并产生相应的分支程序。
AH,1
21H ;读入第2个数字
AL,30H
;第2个数字转换成十进制数
BL,30H
;第1个数字转换成十进制数
BL
;两个数相乘,积在AX中
BL,10 ;
BL
;积除以10取商送AL,余数在AH中
AX,3030H
;转换成相应的ASCⅡ码
BX,AX ;保存在BX中
AH,2
ቤተ መጻሕፍቲ ባይዱ
DL,13
21H ;回车
DL,10
21H ;换行
(5) 编写源程序。
(6) 程序优化。
(7)程序调试、修改和最后确定源程序。只有通 过上机调试并得出正确结果的程序,才能认为是正确 的程序。没有调试过的程序,很难保证程序无错误, 程序调试是不可缺省的。
§3.3.2顺序程序设计
对于一些简单的数据处理,只要把完成处理的各个步骤用 汇编语言描述清楚,让计算机按指令编写的次序从头到尾 一条条执行即可,这样的程序结构称为顺序结构。
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV CMP JGE MOV MOV RET BIGR: JE MOV EQUL: MOV RET START ENDP CODE ENDS END
【例3-1】已知X和Y是数据段中的两个无符号字节单元, 用程序完成表达式Z=(X2+Y2)/2的计算。 编制程序如下:
DATA SEGMENT
X
DB 15
Y
DB 34
Z
DW ?
DATA ENDS
CODE SEGMENT
ASSUME
CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX ;初始化数据段
MOV AL,X ;X中的内容送AL
MUL AL
;计算X×X
MOV BX,AX ;X×X乘积送BX
MOV AL,Y ;Y中的内容送AL
MUL AL
;计算Y×Y
ADD AX,BX ;计算X2+Y2
SHR AX,1 ;计算(X2+Y2)/2 MOV Z,AX ;结果送Z单元
MOV AH,4CH
INT 21H ;返回DOS
是 条件1
否 是
条件2 否
分支程序段2
分支程序段3
分支程序段1
结束
【例3-3】已知AX中放有一个带符号数,编写程序 段,计算它的绝对值。
AL<0 ? N
Y
AX← 0-AX
┇ CMP JGE MOV MOV SUB LOOP: ┇
AX,0 LOOP BX,AX AX,0 AX,BX ┇
1 当X>0
AREA1 DB
100DUP(?)
AREA2 DB
100DUP(00)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
【例3-4】符号函数Y=
0 当X=0 (-128≤X≤+127)
-1 当X<0
设任意给定的X存放在XX单元,计算出函数Y值要求存放在 YY单元。
开始
XX→ AL
AL≥ 0 N
-1→ AL
Y AL=0 1→ AL
AL→ YY单 元
结束
TA
SEGMENT
XX DB 0F0H
YY DB ?
DATA ENDS
(2) 确定算法。根据实际问题的要求、给出的条件及特 点,找出规律性,最后确定所采用的计算公式和计算方 法,这就是一般所说的算法。算法是进行程序设计的依 据,它决定了程序的正确性和程序的指令。
(3) 画程序流程图,用图解来描述和说明解题步骤。
(4) 分配内存工作单元,确定程序与数据区的存 放地址。
CODE ENDS
END START ;汇编结束
【例3-2】从键盘读入两个一位数(按键时保证按下的是数 字键),显示它们的积。
先后从键盘上读取两个按键,分别减去30H得到它们对应的 数值,然后相乘分解成十位数字与个位数字,转换成ASCⅡ 码后依次输出即可。为了输入输出效果的直观,有必要在每 次按键后回车换行。
CODE SEGMENT
ASSUME
CS:CODE
MAIN: MOV AH,1
INT 21H ;读入第1个数字
MOV BL,AL ;保存在BL中
MOV AH,2
MOV DL,13
INT 21H ;回车
MOV DL,10
INT 21H ;换行
CODE
MOV INT SUB SUB MUL MOV DIV ADD MOV MOV MOV INT MOV INT MOV MOV INT MOV INT MOV INT ENDS END
相关主题