第三章 汇编语言程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§ 3.1 汇编语言的源程序格式
⑸所有可执行性语句必须位于某一个代码段 内,说明语句性语句可根据需要位于任一 段内。
⑹通常需要一个堆栈段。 ⑺汇编语句最多由四个域组成:
[标号:] 操作符 操作数 [;注释]
1. 标号
标号的定义:标号在标号域字段出现。 标号的引用:标号在操作数字段出现。 •注意: •标号不能重复定义:一个标号在标号域字段
; SP←栈顶地址1EH
HATAB+0 +1 +2 +3 +4 +5 +6 +7 +8 +9
+0A +0B +0C +0D +0E +0F
30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 41H 42H 43H 44H 45H 46H
HATAB DB ’012345678’ DB ’9ABCDEF’
ARGX DB
15
RLTY DW
0
ENDS
SEGMENT
ASSUME CS:CSEG,DS:DSEG
MOV
AX,DSEG
MOV
DS,AX
MOV
AL,5
MUL
ARGX
ADD
AX,8
MOV
RLTY,AX
MOV
AX,4C00H
INT
21H
ENDS
END CALCU
例3.2 用查表的方法将HEX单元中低4位十六进 制数转换为对应的ASCII码,并显示出来。
第三章 汇编语言程序设计
• 汇编语言源程序格式 • 顺序、分支、循环程序设计 • 子程序设计
§3.1 汇编语言的源程序格式
⑴汇编语言源程序由语句序列构成。 ⑵源程序可以包含若干个代码段、数据段、
附加段或堆栈段。 ⑶段与段之间的顺序任意。 ⑷独立运行的程序必须包含一个代码段,并
指示程序执行的起始点,一个程序只有一 个起始点。
2: SSEG
SEGMENT
3: STK DB
20H DUP (0)
4: SSEG ENDS
Fra Baidu bibliotek
5: DSEG
SEGMENT
6: HATAB DB 30H,31H,32H,33H,34H
7:
DB 35H,36H,37H,38H,39H
8:
DB 41H,42H,43H,44H,45H,46H
9: HEX DB 0CH
3. 2 完整段定义格式
stack segment
;定义堆栈段,段名stack
db 1024 dup(0) ;分配堆栈段的大小为1024字节,内容为0
stack ends
;堆栈段结束
data segment
;定义数据段,段名data
…..
;数据定义
data ends
;数据段结束
code segment
只能出现一次。 •未定义标号不能引用。 •保留字不能用作自定义标号使用。
2. 操作符
操作符可以是指令助记符, 伪指令助记 符,宏指令符号。
3. 操作数
操作数是操作符操作的对象,可以是数 据本身,也可以是标号、寄存器名或算术表达 式。
4. 注释
注释是对指令功能的说明,目的是使自 己或他人在阅读分析程序时方便。
{ 0.2*w
P=
(w≤20kg)
0.2*20+0.3*(w-20) (w>20kg)
例3.3 设内存中有三个互不相等的无符号字数 据,分别存放在ARG开始的字单元,编制 程序将其中最大值存入MAX单元。 AB C
大
大
1:;*****EXAM3.3*****
2:SSEG
SEGMENT STACK
;定义代码段,段名code
assume cs:code, ds:data, ss:stack ;确定各个逻辑段类型
start: mov ax, data ;程序起点
mov ds, ax ;设置DS指向数据段的段地址
…..
;程序代码
mov ax, 4c00h
int 21h
;程序结束,返回DOS
…..
;子程序等的代码
11: DSEG ENDS
12: CSEG SEGMENT
13:
ASSUME CS:CSEG,DS:DSEG
14:
ASSUME ES:DSEG,SS:SSEG
15: HTOA: MOV
AX,DSEG
16:
MOV
DS,AX
17:
MOV
AX,SSEG
18:
MOV
SS,AX
19:
MOV
SP,SIZE STK
code ends
;代码段结束
end start
;汇编结束,程序起始点为start
§3.3 顺序结构程序
例3.1
Y=5X+8,设X为无符号字节数据,
且在ARGX单元存放。计算结果,存入
RLTY单元。
ARGX 15H RLTY 00H
00H
DSEG DSEG CSEG CALCU:
CSEG
SEGMENT
3:
STK DB 20 DUP(0)
4:SSEG
ENDS
5:DSEG SEGMENT
6:
ARG DW 7138H,84A6H,29EH
7:
MAX DW ?
8:DSEG ENDS
9:CSEG SEGMENT
10: ASSUME CS:CSEG,DS:DSEG
11: ASSUME SS:SSEG
12:FMAX:MOV
十六进制 ASCII 十六进制 ASCII 十六进制 ASCII 十六进制 ASCII 0 30H 4 34H 8 38H C 43H 1 31H 5 35H 9 39H D 44H 2 32H 6 36H A 41H E 45H 3 33H 7 37H B 42H F 46H
1: ;*****EXAM 3.2*****
20: MOV AL,HEX
21: LEA BX,HATAB
22: AND AL,0FH
23: XLAT ;换码,将表中内容换到AL中
24: MOV DL,AL ;显示AL中内容
25: MOV AH,02
26: INT
21H
27: MOV AX,4C00H
28: INT
21H
29: CSEG ENDS
AX,DSEG
13: MOV DS,AX
14: MOV AX,SSEG
15: MOV SS,AX
16: MOV SP,SIZE STK
17:
END HTOA
§3.4 分支结构程序
(1) 分支结构程序的引出 (2)例题
分支结构程序的引出
用计算机处理问题过程中,总是要求计算 机能做出各种逻辑判断,并根据判断的结果,做 相应的处理。
例如,火车站用计算机计算托运行李的托
运费,当旅客行李重量小于或等于20kg时,收 费0.2元/kg,当行李重量超过20kg时,20kg以 内部分0.2元/kg,超出部分,收费0.3元/kg。这 个处理过程,可归纳为下面数学表达式: