第4章8086汇编语言程序设计
汇编语言程序设计

汇编语⾔程序设计第4章汇编语⾔程序设计§4.1 汇编语⾔的模式⼀、汇编语⾔源程序的⼀般模式[Name 模块名][Title 标题][定义宏][定义数据段][定义附加段][定义堆栈段]定义代码段源程序结束中括号括起的部分可以省略,可见在⼀个汇编语⾔源程序中必须要定义代码段,并且必须有源程序结束指令。
⼆、8086汇编语⾔程序的⼀个例⼦Pg90。
§4.2 语句⾏的构成汇编语⾔中的语句⼀般分为两种类型:指令性语句和指⽰性语句。
指令性语句的格式为:[标号:] 助记符 [操作数1[,操作数2]] [;注释]指⽰性语句的格式为:[名称] 助记符 [参数1,参数2,……] [;注释]标号和名称都是编程⼈员根据需要和⼀定的规则任意取的。
也可以认为汇编语⾔的语句⾏是由标记和分隔符(空格)构成。
⼀、标记1.IBM宏汇编的字符集(1)字母(2)数字符(3)特殊字符2.界符⽤于定界⼀个标记的结束或⼀个标记的开始,本⾝具有⼀定的意义。
3.常量出现在汇编语⾔源程序中的固定值称为常量。
(1)数值常量①⼆进制:以字母B结束。
②⼗进制:以字母D或⽆字母结束。
③⼋进制:以字母Q(或O)结束。
④⼗六进制:以字母H结束。
(2)字符常量指⽤单引号或双引号引起的字符或字符串。
4.标识符由程序员⾃⼰建⽴的字符序列(标号或名称)。
⼀个标识符不能超过31个字符,不能以数字开头。
5.保留字汇编语⾔中具有特殊意义的字符序列。
6.注释⼀⾏中分号以后的部分。
⽤于对⼀段或⼀⾏程序进⾏说明,便于阅读和理解。
⼆、符号具有⼀定意义的字符序列。
1.寄存器名2.变量段属性、偏移属性、类型属性3.标号段属性、偏移属性、类型属性4.常数5.其它三、表达式由操作数和运算符组合⽽成的序列。
1.操作数(1)⽴即数(2)寄存器操作数(3)存储器操作数2.运算符(1)算术运算符+、-、*、/、MOD(求余)(2)逻辑运算符AND、OR、NOT、XOR(3)关系运算符EQ、NE、LT、LE、GT、GE结果为“假”时,返回0,结果为“真”时,返回⼆进制全1。
8086汇编语言程序设计——第一个程序

8086汇编语⾔程序设计——第⼀个程序本系列以80X86系列微型计算机为基础,以MASM5.0为汇编上机实验环境,重点介绍Intel8086指令系统。
Intel8086指令系统中有100多条指令,利⽤这些指令可以编写出复杂的程序实现更多功能。
汇编语⾔是直接控制计算机硬件⼯作的最简便的语⾔。
学习了汇编语⾔可具有在CPU寄存器级上进⾏控制和操作的能⼒,可获得直接对计算机硬件底层编程的经验。
⼀个计算的例⼦例 *编写⼀个汇编语⾔程序,实现下列公式计算。
假设X=4,Y=5汇编指令如下:如果在DEBUG下⽤A命令输⼊这些指令,必须把X、Y换成具体的数值;Z、Z1是存储单元地址,最后两条指令可写为MOV [0],AL和MOV [1],AH,这样才能⽤T命令执⾏。
D:\dos〉DEBUG-AMOV AL,4ADD AL,5MOV BL,8IMUL BLMOV BL,4MOV BH,0SUB AX,BXMOV BL,2IDIV BLMOV [0],ALMOV [1],AH采⽤DEBUG的A命令输⼊程序的做法明显不⽅便,⼀是⽆法给出变量名即符号地址,⼆是调试修改程序不便。
1. 编写⼀个完整的汇编语⾔源程序需要增加段定义伪指令和定义数据存储单元伪指令等必须有的伪指令。
伪指令与C语⾔等⾼级语⾔中的说明性语句的含义类似,起到说明作⽤。
⽤记事本gedit或者vi编写,保存到dos⽬录下注释符号为;号2. 汇编、链接、执⾏汇编语⾔源程序既可以⽤⼤写字母也可以⽤⼩写字母书写。
汇编语⾔程序建⽴及汇编过程如图所⽰。
⽤户编写的源程序要经汇编程序MASM汇编(翻译)后⽣成⼆进制⽬标程序,⽂件名默认与源程序同名、扩展名为.OBJ;再经过LINK连接⽣成可执⾏程序,⽂件名默认与源程序同名、扩展名为.EXE。
注意:源程序⼀定要和MASM和LINK⽂件放在同⼀个⽂件夹中。
执⾏MASM和LINK命令时需要按多次回车。
3. 在DEBUG下执⾏程序MOV AH,4C指令对应的偏移地址是0023,这就是断点(所谓断点,就是程序执⾏到该处停下来不再继续)。
钱晓捷新版汇编语言程序设计习题答案(1-4)

钱晓捷新版汇编语言程序设计习题答案第一章汇编语言基础知识1.17、举例说明CF和OF标志的差异。
溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确•例1:3AH + 7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算: 58+124=182 ,范围外,有溢出•例2:AAH + 7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28 ,范围内,无溢出1.20、8086有哪4种逻辑段,各种逻辑段分别是什么用途?(解答)代码段(Code Segment)用来存放程序的指令序列。
处理器利用CS : IP取得下一条要执行的指令•堆栈段(Stack Segment)确定堆栈所在的主存区域。
处理器利用SS : SP操作堆栈中的数据•数据段(Data Segment)存放当前运行程序所用的数据。
处理器利用DS : EA存取数据段中的数据•附加段(Extra Segment)是附加的数据段,也用于数据的保存。
处理器利用ES : EA存取数据段中的数据第二章8086指令系统2.1已知DS = 2000H、BX = 0100H、SI = 0002H,存储单元[20100H] ~ [20103H]依次存放12 34 56 78H,[21200H] ~ [21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax,1200h ;AX=1200h(2) mov ax,bx ; AX=0100h(3) mov ax,[1200h] ; AX=4C2Ah(4) mov ax,[bx] ; AX=3412h(5) mov ax,[bx+1100h] ; AX=4C2Ah(6) mov ax,[bx+si] ; AX=7856h(7) mov ax,[bx][si+1100h] ; AX=65B7h2.2指出下列指令的错误(1) mov cx,dl 两操作数类型不匹配(2) mov ip,ax IP 指令指针禁止用户访问(3) mov es,1234h 立即数不允许传给段寄存器(4) mov es,ds 段寄存器之间不允许传送(5) mov al,300 两操作数类型不匹配(6) mov [sp],ax 目的操作数应为[ BP ](7) mov ax,bx+di 源操作数应为 [BX+DI](8) mov 20h,ah 立即数不能作目的操作数2.3已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。
微机原理课后习题参考答案

微机原理课后习题参考答案第1部分微型计算机基础知识1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?【解】微处理器:指计算机内部对数据进行处理并对处理过程进行控制的部件,伴随着大规模集成电路技术的迅速发展,芯片集成密度越来越高,CPU可以集成在一个半导体芯片上,这种具有中央处理器功能的大规模集成电路器件,被统称为“微处理器”。
微型计算机:简称“微型机”、“微机”,也称“微电脑”。
由大规模集成电路组成的、体积较小的电子计算机。
由微处理机(核心)、存储片、输入和输出片、系统总线等组成。
特点是体积小、灵活性大、价格便宜、使用方便。
微型计算机系统:简称“微机系统”。
由微型计算机、显示器、输入输出设备、电源及控制面板等组成的计算机系统。
配有操作系统、高级语言和多种工具性软件等。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?【解】CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。
1.3 微型计算机采用总线结构有什么优点?【解】①简化了系统结构,便于系统设计制造;②大大减少了连线数目,便于布线,减小体积,提高系统的可靠性;③便于接口设计,所有与总线连接的设备均采用类似的接口;④便于系统的扩充、更新与灵活配置,易于实现系统的模块化;⑤便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作;⑥便于故障诊断和维修,同时也降低了成本。
总线的逻辑电路有些是三态的,即输出电平有三种状态:逻辑“0”,逻辑“1”和“高阻”态。
1.4计算机总线有哪些,分别是什么?【解】总线按其信号线上传输的信息性质可分为三组:①数据总线,一般情况下是双向总线;②地址总线,单向总线,是微处理器或其他主设备发出的地址信号线;③ 控制总线,微处理器与存储器或接口等之间1.5 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?【解】数据总线(DB)为双向结构,数据在CPU与存储器或I/O 接口之间的传送是双向的,(数据既可以读也可以写),其宽度通常与微处理器的字长相同。
汇编语言程序设计实验四:8086标志寄存器及中断

汇编语⾔程序设计实验四:8086标志寄存器及中断实验任务1task1.asm源码:assume cs:code, ds:datadata segmentx dw 1020h, 2240h, 9522h, 5060h, 3359h, 6652h, 2530h, 7031hy dw 3210h, 5510h, 6066h, 5121h, 8801h, 6210h, 7119h, 3912hdata endscode segmentstart:mov ax, datamov ds, axmov si, offset xmov di, offset ycall add128mov ah, 4chint 21hadd128:push axpush cxpush sipush disub ax, axmov cx, 8s: mov ax, [si]adc ax, [di]mov [si], axinc siinc siinc diinc diloop spop dipop sipop cxpop axretcode endsend start关于add指令的调试过程截图如下:由图可知add指令使得ZF标志位由NZ变为ZR,CF标志位由NC变为CY,可知运算结果为0且在运算中由最⾼位向更⾼位产⽣了进位。
关于inc指令的调试过程截图如下:由图可知inc指令使得ZF标志位由NZ变为ZR,可知运算结果为0,⽽CF未曾改变。
line31~line34的4条inc指令,不能替换成如下代码,原因是:该题⽤adc指令进⾏⼤整数加法,期间需要⽤到CF标志位的数值,⽽上⾯已经验证过add指令会对CF标志位产⽣影响,故不能替换。
add si, 2add di, 2128位加之前数值截图:完成128位加之后数值截图(有变化):实验任务2task2.asm源码:assume cs:code, ds:datadata segmentstr db 80 dup(?)data endscode segmentmov ds, axmov si, 0s1:mov ah, 1int 21hmov [si], alcmp al, '#'je nextinc sijmp s1next:mov ah, 2mov dl, 0ahint 21hmov cx, simov si, 0s2: mov ah, 2mov dl, [si]int 21hinc siloop s2mov ah, 4chint 21hcode endsend start运⾏结果截图:line11-18:获取键盘输⼊的值并赋值给ds:[si] ,若为“#”,则跳转到next处,否则si++后再次重新进⼊本循环。
第4章 汇编语言程序设计

因此, 因此,对例子中的存储器地址作如下运 算: SUM+2 CYCLE-5 NOT_DONE-GO 是有效的表达式。 是有效的表达式。而 SUM-CYCLE
(2)逻辑运算符 逻辑运算符是按位操作的AND、OR、 、 逻辑运算符是按位操作的 、 XOR和NOT。 和 。 1010 1010 1010 1010B AND 1100 1100 1100 1100B=1000 1000 1000 1000B 1100 1100 1100 1100B OR 1111 0000 1111 0000B=1111 1100 1111 1100B NOT 1111 1111 1111 1111B=0000 0000 0000 0000B
ASSUME CS:MY_CODE, ;规定 和DS 规定CS和 : 的内容 DS:MY_DATA : PORT_VA1 EQU 3 ;端口的符号名 GO: MOV AX, MY_DATA ;DS : 初始化为MY_DATA 初始化为 MOV DS, AX MOV SUM, 0 ;清SUM单元 单元
变量可以具有以下几种寻址方式: 变量可以具有以下几种寻址方式: ① 直接寻址 ② 基址寻址 变址(索引) ③ 变址(索引)寻址 ④ 基址变址寻址
2.运算符(Operators) .运算符( ) 算术运算符( Operators) ① 算术运算符(Arithmetic Operators) 逻辑运算符( Operators) ② 逻辑运算符(Logical Operators) 关系运算符( Operators) ③ 关系运算符(Relational Operators) 分析运算符( Operators) ④ 分析运算符(Analytic Operators) 合成运算符( Operators) ⑤ 合成运算符(Synthetic Operators)
第4章8086,8088微机汇编语言程序设计

2)段内偏移量(Offset) 它是标号与段起始地址之间相距的字节数,为一16位 无符号数。 3)类型(Type) 类型表示该标号所代表的指令的转移范围,分NEA R(近)与FAR(远)两种。NEAR类型的标号仅在 同一段内使用,用2字节指针给出转移的偏移量属性(即 只改变IP值,不改变CS值);而FAR类型的标号无此限 制,必须用4字节指针指出转移的段地址与段内偏移量。 当标号用作JMP或CALL等指令的目标操作数时,若 为段内转移或调用则采用NEAR类型;若为段间转移或 调用则应当采用FAR类型。 JMP FAR PTR LINE
第4章 8086/8088汇编语言程序设计
汇编语言程序设计是开发微机系统软件的基本 功,在程序设计中占有十分重要的地位。
由于汇编语言具有执行速度快和易于实现对硬件的控 制等独特的优点,所以至今它仍然是用户使用得较多的程 序设计语言。特别是在对于程序的空间和时间要求很高的 场合,以及需要直接控制设备的应用场合,汇编语言更是必 不可少了。 由于汇编语言本身的特点,本章将选择目前国内广泛 使用的IBM PC机作为基础机型,着重讨论8086/8088汇编 语言的基本语法规则和程序设计的基本方法,以掌握一般 汇编语言程序设计的初步技术。
(1)立即操作数 立即操作数在指令中直接给出,不需要使用 寄存器,也不涉及访问数据区的操作,只能作为 源操作数。立即操作数是整数,可以是1字节或 2字节。在汇编语言中,立即操作数用常量(包 括数值常量和符号常量)以及由常量与有关运算 符组成的数值表达式表示。 如:MOV BX,1000+5*3 (2)寄存器操作数 通用寄存器AX、BX、CX、DX、BP、 SP、DI、SI以及段寄存器CS、SS、D S、ES都可以作为操作数。如:MOV BX,AX
微机原理与接口技术-汇编语言程序设计

4.1.2 8086汇编语言源程序的格式
源程序的一般格式为: NAME1 SEGMENT
语句 语句 NAME1 ENDS NAME2 SEGMENT 语句 语句 NAME2 ENDS END <标号>
第四章 汇编语言 程序设计
4.2 语句的格式
第四章 汇编语言 程序设计
汇编语句分为指令语句和伪指令语句两类,一般都由分 隔符分成的 4 个部分组成。
HLT
;然后停机
NOT DONE : IN AL, PORT_VAL ;未超过时,输入下一字节
ADD SUM, AL
;与以前的结果累加
JMP CODE ENDS ;代码段结束
END START
;整个程序结束
可以看到,8086汇编的一个语句行是由4个部分组成,即
标号 操作码 操作数 ;注释(或名字)
普通高等学校计算机教育“十三五”
微机原理与接口技术
内容导航
CONTENTS
4.1 汇编语言的格式 4.2 语句的格式 4.3 伪指令语句 4.4 指令语句 4.5 汇编语言程序设计及举例
4.1 汇编语言的格式
4.1.1 8086汇编语言的一个例子
第四章 汇编语言 程序设计
MY_DATA SEGMENT ;定义数据段
SUM DB ?
;为符号 SUM 保留一个字节
MY_DATA ENDS
;定义数据段结束
MY_CODE SEGMENT ;定义码段
ASSUME CS :MY_CODE, DS :MY_DATA
;规定 CS 和 DS 的内容
PORT_VA1 EQU 3
;端口的符号名
START :MOV AX, MY_DATA ;DS 初始化为 MY_DATA
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定义数据段 定义附加段
定义代码段
程序结束
汇编伪指令语句 1.段定义伪指令 段定义伪指令(segment与ends) 段定义伪指令 与
格式: 格式 : 别’] 段名 segment [定位 组合 段字 类 定位][组合 段字][‘类 定位 组合][段字
…. 段名 ends 段的起始地址 段间关系
定位默认para,段起始地址低4位是0 定位默认para,段起始地址低4位是0,所以默认 para,段起始地址低 情况下数据段的偏移地址从0 情况下数据段的偏移地址从0开始 初学者暂不考虑后面的参数,会定义段就可以了 初学者暂不考虑后面的参数 会定义段就可以了
汇编伪指令语句 4.模块通信伪指令 模块通信伪指令
(1)格式:public 符号 格式: 符号[,…] 格式 功能: 功能:当一个符号允许被其他模块调用应该用 public声明。 声明。 声明 这里的符号可以是常量、变量、标号、 这里的符号可以是常量、变量、标号、过程名 (2)格式:extrn 符号 类型 格式: 符号:类型 类型[,…] 格式 功能:指明符号是由其他模块用public定义 功能:指明符号是由其他模块用 定义 该符号在本模块中被引用。 的,该符号在本模块中被引用。 该符号在本模块中被引用 p83 例4.11
第四章 8086汇编语言程序设计
1 2 3 4
汇编语言格式 汇编伪指令语句 汇编语言中的数据 汇编程序的执行过程
汇编语言的语句类型 指令语句 执行,可产生机器代码 由CPU执行 可产生机器代码 执行 可产生机器代码,CPU根据这些 根据这些 代码才能执行相应的操作。 代码才能执行相应的操作。 伪指令语句 由编译器处理,为编译和连接提供控制信息 为编译和连接提供控制信息, 由编译器处理 为编译和连接提供控制信息 不产生机器代码。 不产生机器代码。 宏指令语句 以一个宏名定义的一段指令序列,在汇编中 以一个宏名定义的一段指令序列 在汇编中 凡是出现宏指令语句的地方,都会有相应的 凡是出现宏指令语句的地方 都会有相应的 指令语句序列的目标代码插入。 指令语句序列的目标代码插入。
汇编伪指令语句 (2) ORG伪指令 伪指令(origin起始 起始) 伪指令 起始 格式: 格式: ORG n 功能: 功能:设置当前地址计数器的值 例:DATA SEGMENT A DW 66 ORG 30H C DB 2,4,6 DATA ENDS 这个时候,C的偏移地址就不再是 的偏移地址就不再是0002H, 这个时候 的偏移地址就不再是 而是0030H。 即从偏移地址 而是 。 即从偏移地址0030H开始存 开始存 放2,4,6
汇编伪指令语句
5.数据定义伪指令 定义变量 数据定义伪指令(定义变量 数据定义伪指令 定义变量)
格式: 变量名 变量名] 格式:[变量名 DB/DW/DD 初值表 功能:定义一个变量,并给它赋初值 并给它赋初值。 功能:定义一个变量 并给它赋初值。 例如: 例如:DATA SEGMENT A DB 0,?,3 B DW 100,1200H,-5 重复次数 C DB ‘A’, ‘XY’ 重复分配操作符 D DW ‘XY’ E DW 3,4466H,2DUP(1,0) 重复数据列表 DW 1123H,0015H 相当于1 相当于1,0,1,0 F DW C DATA ENDS
DATA SEGMENT ;定义数据段 定义数据段 DATA1 DW 1234H ;定义被加数 定义被加数 DATA2 DW 5678H ;定义加数 定义加数 DATA ENDS ;数据段结束 数据段结束 ESEG SEGMENT ;定义附加段 定义附加段 SUM DW 2 DUP(?) ;定义存放结果区 定义存放结果区 ESEG ENDS ;附加段结束 附加段结束 CODE SEGMENT ;定义代码段 定义代码段 ASSUME CS:CODE,DS:DATA,ES:ESEG START: MOV AX,DATA ;START为程序的启动标号 为程序的启动标号 MOV DS,AX ;初始化 初始化DS 初始化 MOV AX,ESEG MOV ES,AX ;初始化 初始化ES 初始化 LEA SI,SUM ;存放结果的偏移地址送 存放结果的偏移地址送SI 存放结果的偏移地址送 MOV AX,DATA1 ;取被加数 取被加数 ADD AX,DATA2 ;两数相加 两数相加 MOV ES:[SI],AX ;和送附加段的 和送附加段的SUM单元中 和送附加段的 单元中 MOV AH,4CH INT 21H CODE ENDS ;代码段结束 代码段结束 END START ;源程序结束 源程序结束
汇编语言中的数据
1.常量 . 数值常量、字符串常量、 数值常量、字符串常量、符号常量 2.变量 . 用数据定义伪指令DB、 例:用数据定义伪指令 、DW、DD定义变量 用数据定义伪指令 、 定义变量 DATA SEGMENT DA1 DB 12H ;定义一个字节数据 定义一个字节数据 DA2 DD 0FEDCBA90H ;定义一个双字数据 定义一个双字数据 DA3 DW 5678H ;定义一个字数据 定义一个字数据 DATA ENDS 3.标号 . 标号是一条指令的符号地址。 在无条件转移指令、 标号是一条指令的符号地址 。 在无条件转移指令 、 条 件转移指令、循环指令和子程序调用指令的操作数位置上, 件转移指令、循环指令和子程序调用指令的操作数位置上 通常用标号作为程序转移指令的目标地址。 通常用标号作为程序转移指令的目标地址。
汇编伪指令语句
6.符号定义伪指令 符号定义伪指令
格式: 表达式(常量 变量.标号 寄存器.内存单元 常量.变量 标号.寄存器 内存单元) 格式:符号名 EQU 表达式 常量 变量 标号 寄存器 内存单元 表达式(数值 数值) 符号名 = 表达式 数值 功能: 作用等同于EQU。 功能:“=”作用等同于 作用等同于 。 ①“=”的表达式只能是数值表达式 ①“ 的表达式只能是数值表达式 ②用=,EQU定义的不占内存空间 定义的不占内存空间 例如: 例如:DATA SEGMENT A DB 0,?,3 B =1 C EQU B+1 D EQU [SI+2] E EQU 25 DATA ENDS
汇编伪指令语句 7.地址计数器和 地址计数器和ORG伪指令 地址计数器和 伪指令
(1)地址计数器 表示当前地址计数器的值 地址计数器($表示当前地址计数器的值 地址计数器 表示当前地址计数器的值) 例:DATA SEGMENT A DW 66 B DB 18 DUP(?) C EQU $-A DATA ENDS 定位默认para,A的偏移地址为 的偏移地址为0,$=0014H 定位默认 的偏移地址为 所以,C=0014H-0000H=14H=20D 所以 实际上,就是计算 就是计算C到 内存单位的个数 实际上 就是计算 到A内存单位的个数 如果换成 C EQU $-B 则 C=18D
段寄存器的装入
伪指令assume cs:code,ds:data,ss:stack只 伪指令 只 是将cs、 、 和 相连, 是将 、ds、ss和code、data、stack相连 、 、 相连 并没有给cs、ds、ss赋相应的段地址 并没有给 、 、 赋相应的段地址 CS的装入 的装入
源程序结束定义伪指令:END 标号 每个源程序都必须以END伪指令结束 例如:start:… end start
段寄存器的装入 的装入(类似于 的方法) 第(2)种:SS的装入 类似于 种 的装入 类似于DS/ES的方法 的方法 STACK1 SEGMENT DW 40H DUP(0) TOP LABEL WORD STACK1 ENDS …… CODE SEGEMNT ASSUME CS:CODE,SS:STACK1 …… MOV AX,STACK1 MOV SS,AX MOV SP,OFFSET TOP ;SP=80H ……
伪指令语句
[名字 伪指令助记符 参数 参数 [;注释 名字] 参数,参数 参数… 注释 注释] 名字 例如: 数据定义伪指令DB,在内存中定义 例如: data1 db 0,1,2 ;数据定义伪指令 数据定义伪指令 在内存中定义 ;3个连续的字节单元 初值是0,1,2 个连续的字节单元,初值是 个连续的字节单元 初值是 ;data1表示第一个数据 的偏移地址 表示第一个数据0的偏移地址 表示第一个数据
汇编语言格式
指令语句
[标号 指令助记符 [操作数 操作数 [;注释 标号:] 操作数,操作数 注释] 标号 操作数 操作数] 注释 例如: mov cx,8 ;2操作数指令 例如: 操作数指令 s:nop ;0操作数指令 操作数指令(nop空操作 空操作) : 操作数指令 空操作 loop s ;1操作数指令 操作数指令
汇编伪指令语句
3.过程定义伪指令 过程定义伪指令(proc和endp) 过程定义伪指令 和 格式: 格式: 过程名 proc near/far …. ret 过程名 endp 功能:定义过程(子程序 子程序)段供其他程序调用 功能:定义过程 子程序 段供其他程序调用 near可以被同一代码段中的其他程序调用 可以被同一代码段中的其他程序调用, 可以被同一代码段中的其他程序调用 far可以被不用代码段中的程序调用 可以被不用代码段中的程序调用, 可以被不用代码段中的程序调用 缺省为near 缺省为 把具有独立功能的程序段定义为子程序, 把具有独立功能的程序段定义为子程序 便于程序的阅读和调试。 便于程序的阅读和调试。p82,例4.10 例
PAGE NONE(默认 默认) NONE(默认) PARA(默认 默认) PARA(默认) PUBLIC WORD STACK 在程序中, 在程序中,段名就代表段地址 BYTE
多个’类别’ 多个’类别’ 连续存放
STACK CODE DATA
汇编伪指令语句 2.指定段寄存器伪指令 指定段寄存器伪指令(assume) 指定段寄存器伪指令
汇编伪指令语句
8.源程序结束伪指令 源程序结束伪指令END 源程序结束伪指令 格式: 格式:END 标号 功能:该语句标志整个程序的结束, 功能:该语句标志整个程序的结束 是源程序的最后一条语句。 是源程序的最后一条语句。