汇编语言程序设计 第3章:汇编语言程序格式

本文详细介绍了汇编语言中的伪指令、段定义、变量和标号的使用,以及DOS功能调用的通用方法和示例。此外,还涵盖了汇编语言源程序的结构、上机过程和调试工具如MASM、LINK和DEBUG的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 伪指令

1.1 段定义伪指令

格式:段名字 SEGMENT [类型]
……
段名字 ENDS
例4.1 data SEGMENT
……
data ENDS

1.2 段寄存器说明伪指令

格式:ASSUME 段寄存器:段名 [,段寄存器:段名]
说明:利用SEGMENT/ENDS定义完一个段之后,必须通过ASSUME伪指令来明确所定义的段与段寄存器之间的关系。

例4.2 ASSUME CS:code,DS:data
该语句告诉汇编程序,从现在开始CS寄存器对应名字为code的段,DS寄存器对应名字为data的段。

在这里插入图片描述

1.3 过程定义伪指令

格式:过程名 PROC FAR/NEAR
……
过程名 ENDP
例4.4
main PROC FAR
……
main ENDP

1.4 源程序结束伪指令

格式:END [<标号>]
说明:对于END后面所带的标号,必须事先在程序中加以定义,表示程序要从标号所对应的指令开始执行,也就是说标号给定了程序的启始地址。

2. 变量/标号定义伪指令

2.1 变量定义

格式:[<变量名>] 变量定义伪指令 <表达式>
功能:声明一个变量的数据类型、代表的值、地址。
说明:
(1) 变量名是可有可无的,如果有,则会被汇编成该变量所对应的最开始字节的偏移地址
(2) 变量定义伪指令(共5个)
DB:定义字节类型变量,指示每个操作数占1个字节。
DW:定义字类型变量,指示每个操作数占1个字(16位)。
DD:定义双字类型变量。
DQ:定义四字类型变量。
DT:定义十字节类型变量。

(3) 表达式可以是常数、字符串、变量、“?”、DUP子句等,各表达式间用逗号进行分隔。
① 表达式是常数的情况:
例4.5 X DW 1234H,4567H
② 表达式是字符串的情况:
例4.6 STR DB ‘HELLO’
X DB ‘AB’
Y DW ‘AB’
③ 表达式是变量的情况:
例4.7 X DB 10H
Y1 DW X
Y2 DD X
说明:用DW或DD可以把变量的地址存入存储器。使用DW时,将存储变量的偏移地址;使用DD时,将存储变量的偏移地址和段地址,并且先存放偏移地址,后存放段地址。
④“?”:表示不定义初值,只预留存储器空间。
例4.8 X DB 1CH,30H
Y DB ‘ASM’
Z DW 10H,?,20H
⑤ DUP:复制操作符,用来复制某个(或某些)操作数,DUP可以嵌套使用。
格式:
<重复次数> DUP(<操作数1>,<操作数2>,…)
(4) 变量的三个属性
① 变量的段属性:是指变量被定义时所在段的段地址
② 变量的偏移属性:是指从段的起始地址到定义变量的位置之间的字节数,也称为变量的偏移地址
③ 变量的类型属性,定义该变量时所保留的字节数目

2. 2 标号定义

标号在代码段中定义,后跟冒号,是指令在存储器中存放地址的符号表示。
标号也具有三个属性:
段属性、偏移属性、类型属性。
标号的段属性和偏移属性与变量的这两个属性类似,标号的类型属性有两种:
NEAR:标号只能在段内引用;
FAR:标号可以在段间引用。

2.3 表达式

  1. 常量:在源程序中已有确定数值的量。
    主要用于给变量赋初值等方面,其表
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵远疴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值