第4章 伪指令及汇编语言源程序

合集下载

单片机指令系统习题

单片机指令系统习题

单⽚机指令系统习题第四章汇编语⾔程序设计第⼀节汇编语⾔源程序的格式和伪指令(⼀)学习要求1、掌握汇编语⾔源程序格式和伪指令。

2、掌握各种伪指令功能。

(⼆)内容提要⼀:汇编语⾔源程序的格式1、语句格式汇编语⾔源程序是由汇编语句(即指令)组成的。

汇编语⾔⼀般由四部分组成。

其典型的汇编语句格式如下:标号:操作码操作数;注释START:MOV A,30H ;A←(30H)(1) 标号段标号是⽤户定义的符号地址。

(2) 操作码段操作码段是每⼀语句中不可缺少的部分,也是语句的核⼼部分,⽤于指⽰计算机进⾏何种操作,汇编程序就是根据这⼀字段⽣成⽬标代码的。

(3) 操作数段指出了参与操作的数据或存放该数据的地址。

通常有⽬的操作数和源操作数之分。

(4) 注释段为了增强程序的可读性,可在某⾏指令的后⾯⽤分号起头,加上注释,⽤以说明该条指令或该段程序的功能、作⽤,以供编程⼈员参考。

此注释内容程序汇编时CPU 不予处理,不产⽣⽬标代码。

⼆:伪指令1、定位伪指令ORG(Origin)格式:[标号:] ORG mm:16位⼆进制数,代表地址。

功能:指出汇编语⾔程序通过编译,得到的机器语⾔程序的起始地址。

2、定义字节伪指令DB(Define Byte)格式:[标号:] DB X1,X2,~XnXn:单字节⼆进制、⼗进制、⼗六进制数,或以… ?括起来的字符串,数据符号。

功能:定义程序存储器从标号开始的连续单元,⽤来存放常数、字符和表格。

3、定义字伪指令DW(Define Word)格式:[标号:] DW Y1,Y2,~YnYn:双字节⼆进制、⼗进制、⼗六进制数,或以… ?括起来的字符串,数据符号。

功能:同DB,不同的是为16位数据。

4、汇编结束命令END格式:[标号:] END功能:END是汇编语⾔源程序的汇编结束标志,在它后⾯所写的指令均不予处理。

5、等值命令EQU格式:字符名称EQU 数或汇编符号功能:将⼀个数或特定的汇编符号赋予规定的字符名称。

汇编语言设计实践:第4部分 基本汇编语言

汇编语言设计实践:第4部分 基本汇编语言
第四章 基本汇编语言
4.1 汇编语言语句种类及其格式
汇编语言的程序格式
• 完整的汇编语言源程序由段组成,段由指令语句与 伪指令语句构成
• 一个汇编语言源程序可以包含若干个代码段、数据 段、附加段或堆栈段,段与段之间的顺序可随意排 列
• 需独立运行的程序必须包含一个代码段,并指示程 序执行的起始点,一个程序只有一个起始点
• 所有的指令语句必须位于某一个代码段内,伪指令 语句可根据需要位于任一段内或段外
汇编语言的语句可以分为指令语句和伪指令语句
•指令语句——产生使CPU产生动作、可供机器
执行的机器目标代码
•伪指令语句——不产生CPU动作、在程序执行
前由汇编程序处理的说明性语句,例如,数据说明、 变量定义等等
2
一、指令语句
每一条指令语句在汇编时都要产生一个可供CPU执 行的机器目标代码,它又叫可执行语句。
指令语句的一般格式为: 标号 : 操作码
, 操作数
; 注释
一条指令语句最多可以包含4个字段 例 L1:MOV AH,0A0H ;将0A0H放入AH
3
1.标号字段
标号是可选字段,它后面必须有“:”。标号是一条 指令的符号地址,代表了该指令的第一个字节存放 地址。
注释字段可以是一条指令的后面部分,也可以是 整个语句行。
例:
LABEL1: ADD AX,BX; 功能为AX<=(AX)+(BX)
;后面的程序段将完成两次对存储器的访问
MOV AX, W_VAR1
MOV W_VAR2, AX
7
二、伪指令语句
伪指令语句又叫命令语句。 伪指令本身并不产生对应的机器目标代码。它仅 仅是告诉汇编程序对其后面的指令语句和伪指令 语句的操作数应该如何处理。

汇编 第四章伪指令及汇编语言源程序结构

汇编 第四章伪指令及汇编语言源程序结构

MOV AL, BUF1
ADD AL, BUF2 MOV SUM, AL
;取第一个加数
;两数加 ;和放入SUM单元
3
伪指令(指 示性)语句: 提供相关辅 助信息。
指令性语句: 完成一定功 能,能翻译 成机器码。
伪指令语句
DATA SEGMENT ;DATA段定义开始 BUF1 DB 34H BUF2 DB 27H SUM DB ? DATA ENDS ;DATA段定义结束 CODE SEGMENT ;CODE段定义开始 ASSUME CS:CODE ASSUME DS:DATA ;段性质规定 START: MOV AX,DATA MOV DS,AX ;给DS赋值 MOV AL, BUF1 ;取第一个加数 ADD AL, BUF2 ;两数加 MOV SUM, AL ;和放入SUM单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS ;CODE段定义结束 END START ;源程序结束
14
二、= 等号伪指令
格式:符号名 = 表达式 功能:为常量、表达式及其他各种符号定义一个等价的符号 名,并能对所定义的符号多次重复定义,且以最后一次定义 的值为准。 例:COST = 20 M = MOV LOST = COST+10 ;30→LOST M = ADD ;M=ADD 注 : “ = ” 伪 指 令 的 格 式 和 功 能 与 EQU 类 似 。 二者区别:在同一程序中,“=”可以对一个符号重 复定义,EQU不能对同一符号重复定义。
26
三、变量、标号的分析运算和合成运算
例:DATA SEGMENT A DB ‘ABCDEF’ B DW 10 DUP(1,2DUP(2)) C DB 3,20 DUP(0) DATA ENDS ┆ MOV AX,LENGTH A ;1→AX MOV BX,LENGTH B ;10→BX MOV CX,LENGTH C ;1→CX ┆

第四章-汇编语言程序的设计

第四章-汇编语言程序的设计

第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。

(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。

在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。

(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。

汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。

①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。

②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。

(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。

)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。

操作数:给指令的操作提供数据或地址。

注释:是对语句或程序段的解释说明。

(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。

冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。

第4章 汇编 语言程序设计

第4章  汇编 语言程序设计

DJNZ R1,LOOP ;R1减1不为零,则跳LOOP处 NOP
HERE:SJMP
HERE
上述4个字段应该遵守的基本语法规则如下。
10
1.标号字段
语句所在地址的标志符号,才能被访问。如标号 “START”和“LOOP”等。有关标号规定如下: (1)标号后必须跟冒号“:”。 (2)标号由1~8个ASCII码字符组成,第一个字符必须是
8
汇编语言语句是符合典型的汇编语言的四分段格式:
标号字段 (LABLE) 操作码字段 (OPCODE) 操作数字段 (OPRAND) 注释字段 (COMMENT)
标号字段和操作码字段之间要有冒号“:”分隔; 操作码字段和操作数字段间的分界符是空格; 双操作数之间用逗号相隔;
操作数字段和注释字段之间的分界符用分号“;”。
表示的机器语言程序,才能识别和执行。
完成“翻译”的程序称为汇编程序。经汇编程序“汇编”得 到的以“0”、“1”代码形式表示的机器语言程序称为目标 程序。
5
优点:用汇编语言编写程序效率高,占用存储空间小,运行 速度快,能编写出最优化的程序, 缺点:可读性差,离不开具体的硬件,是面向“硬件”的语 言通用性差。 2.高级语言
功能是把P1.6的位地址赋给变量QA。
4.2
汇编语言源程序的汇编
“汇编”?汇编可分为手工汇编和机器汇编两类。
22
4.2.1
手工汇编
通过查指令的机器代码表(表3-2),逐个把助记符指令 “翻译”成机器代码,再进行调试和运行。 手工汇编遇到相对转移偏移量的计算时,较麻烦,易出 错,只有小程序或受条件限制时才使用。实际中,多采用“ 汇 编程序”来自动完成汇编。
16
重叠。例如:
ORG …… ORG …… ORG …… 2000H 2500H 3000H

汇编语言程序

汇编语言程序

2020/12/27
16
4.2.4 表达式
在80x86汇编语言中,有数值表达式和地址 表达式两种。
数值表达式 由各种常量与数值运算符连接而成的式子,
称为数值表达式。数值表达式的计算结果是 一个数值,它只有大小而没有属性。 算术、关系、逻辑运算符
2020/12/27
17
地址表达式
由常量、变量、标号、寄存器和数值运算符、 地址运算符组合而成的有意义的式子,称为 地址表达式,单个变量、标号是地址表达式 的最简形式。由于变量和标号具有段 (SEG)、偏移(OFFSET)、类型 (TYPE)3种属性,这就决定了对它们的访 问是多种形式的。
Байду номын сангаас第四章 汇编语言程序
4.1 汇编语句 4.2 汇编语言数据 4.3 8086指令系统 4.4 汇编语言伪指令 4.5 汇编源程序结构 4.6 上机操作过程
2020/12/27
1
4.1 汇编语句
4.1.1 语句种类 汇编语言有3种语句类型,指令语句、伪指令语句、宏指令语
句。
指令语句是可执行语句,在汇编时可产生供机器执行的二进制
2020/12/27
3
2.名字
名字是一串字符序列,最多包含31个字符。在汇 编语言中,名字的应用范围很广,有寄存器名、变 量名、常量名、标号、指令名等等。在语句格式中 作为第一可选成分出现的<名字>,在不同的语句 中具有不同的含义。它在指令语句中表示标号,后 面必须跟有冒号“:”;而在伪指令语句中表示变 量名,常量名,段名,过程名,后面不能有冒号。 这是两种语句在格式上的主要不同之处。
指令语句中的标号和伪指令语句中变量名,段名, 过程名是一种符号地址,可作为汇编指令的一个操 作数,但常量名不是符号地址,不能用做目的操作 数。不同的标号、变量和常量不能同名。

ch4-1汇编语言程序设计(伪指令)

ch4-1汇编语言程序设计(伪指令)
什么是伪指令?
由汇编程序执行的“指令系统” 用于定义变量、分配存储区、定义逻辑段、
指示程序开始和结束等 在汇编时被解释执行,不产生任何目标代码
常用伪指令分类
数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 宏命令伪指令 结束伪指令
第四章 汇编语言程序设计
第四章 汇编语言程序设计
data SEGMENT
名字 Hello DB ‘Hello, world!’,0DH,0AH,’$’
data ENDS prog SEGMENT
伪指令
ASSUME CS:prog ,DS:data
start: MOV AX,data
MOV DS,AX
标号
LEA DX,hello
MOV AH,9
INT 21H 指令码 MOV AH,4CH
NUM:ADD AL,30H
RET
第四章 汇编语言程序设计
2.汇编语言与高级语言
• 汇编语言是一种依赖于计算机微处理器的语言 • 汇编语言一般不具有通用性和可移植性 • 进行汇编语言程序设计必须熟悉机器的硬件资
源和软件资源 • 高级语言是面向过程的语言 • 高级语言具有很好的通用性和可移植性
第四章 汇编语言程序设计
INT 21H
prog ENDS
操作数
END start
(4)操作数
常量 变量或标号 表达式 寄存器 存储器单元
第四章 汇编语言程序设计
第四章 汇编语言程序设计
表达式: 算术运算 逻辑运算 关系运算 取值运算和属性运算 其它运算
有数字表达式和地址表达式两种。 汇编时按优先规则对表达式进行计算,计算出
注意:
名字和标号: 标号后有冒号,在指令性语句前;名字后不加

汇编语言学习第4章

汇编语言学习第4章

不同而不同。
(名字项,常称为标号) 标号是程序设计人员自己定义的表示符号,用来表示本语句的符号地址
(即该指令的偏移地址,也就是该单元与其所处段基址的偏移量)是可有
可无的,只有当需要用符号地址来访问该语句时才需要。 2.operation(操作符)
操作符项可以是指令、伪操作或宏指令的助记符。对于指令,作用是指出
1.等价语句EQU
等价语句的一般使用格式如下: SYMBOL EQU EXPRESSION
作用是用左边的符号名代表右边的表达式。
注意:等价语句不会给符号名分配存储空间,符号名不能与其它符号同名, 也不能被重新定义。
(1)用符号名代表常量或表达式
例4.14 (2)用符号名代表字符串 例4.15 (3)用符号名代表关键字或指令助记符 例4.16
例4.21
2.定义字变量的伪指令为DW
一个变量占一个字空间
例4.22:WORD1 DW DW 89H, 1909H, -1 0ABCDH, ?, 0
上面的定义语句经汇编后所产生出的内存单元分配情况如下:
… 89 00 09 19 FF FF CD AB --00 00 …
例4.23
3.双字变量定义伪指令DD 每个双字变量占用二个连续的字单元(四个字节)。
功能和作用,而不应该只写出指令的动作。
4.2运算符号
4.2.1算术运算符
算术运算符有:+、-、*、/和MOD。 其中: +、-、*、/就是我们算术中常用的加、减、乘、除。 MOD算符是模运算。指除法运算后得到的余数。 例如:5 MOD 2为1。 注意:算术运算符可以用于数字表达式或地址表达式中,但当它用于地址 表达式时,只有当其结果有明确的物理意义时才是有效的。 例如:将两个地址相乘或相除是无意义的。地址可以做加减运算,但也必 须注意物理意义。例如把两个不同段的地址相加减也是无意义的。 例4.1 例4.2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019/4/12 9
第 4章
符号定义伪指令
2、 等号伪指令 = = 伪指令的格式与功能和 EQU 类似。不同的是, 在同一个程序中 = 可以对一个符号重复定义, EQU不能对同一个符号重复定义。 Y1=7 Y1=128 的定义是正确的。 而 Y1 EQU 7 Y1 EQU 128 的定义是错误的。
2019/4/12
24
第 4章
组合类型
组合类型规定本段与其他段的关系,有 4 种方式(默 认方式为NONE): NONE:连接时,表示本段与其他段在逻辑上没有 关系。 PUBLIC:连接时,本段将与其他同名、同类别的段 相邻地连接在一起,形成一个物理段,段的长度为 各PUBLIC段长度之和。 COMMON:连接时,本段将与其他同名、同类别 的段相覆盖,形成一个物理段,段的长度为最长的 COMMON段的长度。 STACK:表示此段为堆栈段,连接方式与PUBLIC 段相同。
2019/4/12
偏移地址低字节
偏移地址高字节
偏移地址低字节 偏移地址高字节
段地址低字节
段地址高字节
图4.2
15
第 4章
操作数是字符串
操作数为字符串时,内存中存放的是各字符的ASCII码。 例4-5 下面3个定义语句是等价的。 STR1 DB ‘ABCD’ STR1 DB ‘A’, ‘B’, ‘C’, ‘D’ STR1 DB 41H,42H,43H,44H 例4-6 下面2个定义语句是等价的 STR2 DB ‘AB’ STR2 DW ‘BA’ 当定义的字符串中字符多于2个时,只能使用DB定义,不 能使用DW。 STR3 DW ‘ABCD’ 是错误的定义方式。
2019/4/12
5
第 4章
操作码与操作数
操作码 操作码用来指明操作的性质或功能。指令中的助记符都 是操作码。操作码与操作数之间用空格分开。 操作数 指令中的操作数用来指定参与操作的数据,对于一般指 令,可以有1个或2个操作数,也可以没有操作数;对 于伪指令和宏指令,可以有多个操作数。操作数多于1 个时,操作数之间用逗号分开。 操作数可以是常数和表达式。
2019/4/12
14
第 4章
操作数是表达式(代表内存单元地址)
ADDR1 DW NEXT ADDRW ;存放偏移地址 ADDR2 DD NEXT ;存放偏移地址和段地址 ADDRD ┆ NEXT:MOV AL,34H NEXT为一条指令的标号,代 表了这条指令所在单元的地址, 由于ADDR1是一个字单元, 所以其中只存放偏移地址, ADDR2是一个双字单元,其 中存放偏移地址和段地址,存 储情况如图4.2所示。
2019/4/12 10
第 4章
符号定义伪指令
3.解除定义伪指令PURGE 格式:PURGE <符号1,符号2,…,符号n> 功能:解除指定符号的定义,解除符号定义后, 可以用EQU重新定义。 Y1 EQU 7 PURGE Y1 Y1 EQU 128 的定义是正确的。
2019/4/12
11
第 4章
2019/4/12
20
第 4章
PTR 应用
例4-8 对于如下定义 DA1 DW 345FH DA2 EQU BYTE PTR DA1 DA3 EQU DA2+1 DA1代表一个字单元,DA2、DA3分别代表一个字节单 元,DA2和DA1具有相同的段地址和段内偏移地址, 但类型不同。 例4-9 对于指令 MOV [BX],5 汇编程序不能确定出是字 节传送,还是字传送,必须要用PTR进行明确说明。 MOV BYTE PTR [BX],5 ;字节传送 MOV WORD PTR [BX],5 ;字传送
2019/4/12 18
第 4章
分析操作符
OFFSET <变量或标号>:计算出变量或标号的段内偏移 地址。 SEG <变量或标号>:计算出变量或标号的段地址。
MOV SI,OFFSET DAB1;把DAB1的偏移地址存入SI寄存 器中 等价于指令 LEA SI,DAB1。 MOV AX,SEG DAB1:DAB1的段地址存入AX寄存器中。
第 4章
4.1.2 语句格式
指令语句和伪指令语句的格式是类似的,格式如下: [名字] 操作码 操作数 [;注释] 其中带方括号的项可以省略,注释以分号(;)开始。 ⑴ 执行性语句——由硬指令构成的语句,它通常对应一 条机器指令,出现在程序的代码段中: 标号: 硬指令助记符 操作数,操作数 ;注释 ⑵ 说明性语句——由伪指令构成的语句,它通常指示汇 编程序如何汇编源程序: 名字 伪指令助记符 参数,参数,… ;注释
2019/4/12 12
第 4章
操作数是常数(代表数据)
例4-3 操作数是数据的定义形 式。 DATAB DB 18H,-1,30 ; 每个数占用一个字节单元 DATAW DW 18H , 2A45H ;每个数占用一 个字单元 DATAD DD 18H , 2F3A124BH ;每个数占用 一个双字单元 在内存中的存储情况 如图4.1所示。
2019/4/12
19
合成操作符(1)
第 4章
合成操作符也叫属性操作符,用来改变原有变 量或标号的类型。 · <类型> PTR <表达式> 给表达式(一般是变量或标号)强行指定类型。 对于变量,可以指定的类型是:BYTE(字节)、 WORD(字)、DWORD(双字);对于标号, 可 以 指 定 的 类 型 是 NEAR ( 段 内 引 用 型 ) 、 FAR(段间引用型)。
第4章 伪指令及汇 编语言源程序结构
本章重点:1、汇编语言语句格式 2、伪指令 3、源程序4种常见的结构形式
2019/4/12
1
第 4章
4.1 汇编语言语句格式
4.1.1 语句种类 汇编语言语句分为2类: ( 1 )指令语句:完成一定操作功能,能够翻 译成机器代码的语句,也就是由第 3 章中介绍 的指令所形成的语句。 (2)伪指令语句(也叫指示性语句):只是 为汇编程序在翻译汇编语言源程序时提供有关 信息,并不翻译成机器代码的语句。
2019/4/12
8
第 4章
4.2 伪指令
4.2.1 符号定义伪指令 1、 等值伪指令EQU 格式:<符号名> EQU <表达式> 功能:给符号名定义一个值、别的符号名、表达 式或助记符。 例: 给出如下符号定义 X1 EQU 25 ;常数 X2 EQU X1+12 ;表达式 X3 EQU [SI+2] ;存储单元
2019/4/12
DATAB
DATAW
DATAD
18 FF 1E 18 00 45 2A 18 00 00 00 4B 12 3A 2F
图4.1
13
第 4章
说明:
(1) 操作数可以用各种进制形式书写,汇编程序 将其转换成相应的补码存入内存单元中。 (2) 同样一个数(如 18H ),由于数据定义助记 符的不同,所占用的内存空间是不一样的。 (3)数据的高字节存放在高地址单元,低字节存 放在低地址单元。
2019/4/12
6
数值 常数 操作数 字符串 符号常量 (常数用符号名代替) 算术运算表达式 表达式 逻辑运算表达式 关系运算表达式 + - * / MOD(取余) AND OR XOR NOT EQ LT GT GE
第 4章
注释项
注释是语句的说明部分,用来说明一条指令或 一段程序的功能,由分号(;)开始,适当的 加些注释,可以增加程序的可读性,便于阅读、 理解和修改程序。 汇编程序在翻译源程序时将跳过该部分,不对 它们做任何处理注释部分不产生机器代码。
4.2.2 数据定义伪指令
格式:[变量] 助记符 操作数 [;注释] 功能:为操作数分配存储单元,并用变量与存储单元相联系。 助记符 一个操作数占用空间 变量 DB 1个字节 字节变量 DW 2个字节(1个字) 字变量 DD 4个字节(双字) 双字变量 DF(386以上CPU)3字单元 三字变量 DQ 4字单元 四字变量。 DT 10个字节单元 十字节变量 使用DT助记符时,对于10进制操作数,必须给出后缀D, 没有后缀的默认为压缩BCD码。
2019/4/12 22
第 4章
4.2.3 段定义伪指令
段定义伪指令的格式如下: <段名> SEGMENT [定位] [组合] [‘类别’] [属性] ┆ ;段体 <段名> ENDS 完整段定义由SEGMENT和ENDS这一对伪指令实现, SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令 表示一个段的结束 段定义指令后的4个关键字用于确定段的各种属性, 堆栈段要采用stack组合类型,代码段应具有‘code’ 类别,其他为可选属性参数 如果不指定,则采用默认参数;但如果指定,注意要 按照上列次序
2019/4/12 16
第 4章
操作数
3. 操作数是 “?”,此时只分配单元,不定义初值 BUF1 DB 5,6,7,? BUF2 DW 56H,78H,?,345FH 4.操作数用复制操作符DUP,表示操作数重复若干次 BUF1 DB 2 DUP(2,3,4) 等价于 BUF1 DB 2,3,4,2,3,4 BUF2 DW 1,2,3 DUP(6) 等价于 BUF2 DW 1,2,6,6,6
一个完整程序
2019/4/12 2
该程序的功能是完成两个字节数据相加。 DATA SEGMENT ;段定义开始(DATA段) BUF1 DB 34H ;第1个加数 BUF2 DB 2AH ;第2个加数 SUM DB ? ;准备用来存放和数的单元 伪指令语句 DATA ENDS ;段定义结束(DATA段) CODE SEGMENT ;段定义开始(CODE段) ASSUME CS:CODE,DS:DATA ;规定DATA、CODE分别为数据段和代码段 START:MOV AX,DATA MOV DS,AX ;给数据段寄存器DS赋值 MOV AL,BUF1 ;取第1个加数 ADD AL,BUF2 ;和第2个加数相加 指令语句 MOV SUM,AL ;存放结果 MOV AH,4CH ; INT 21H ;返回DOS状态 CODE ENDS ;段定义结束(CODE段) END START ;整个源程序结束
相关文档
最新文档