汇编语言3伪指令ppt课件

合集下载

伪指令

伪指令

第6章 6.1.5 伪指令
SEG和OFFSET
SEG返回存储器地址操作数的段地址 OFFSET 返回存储器地址操作数的段内偏移地 址部分
: NUMBER-1 DD ? CCAA EQU SEG NUMBER-1 : MOV AX,SEG NUMBER-1 MOV DS,AX MOV SI,OFFSET NUMBER-1
第6章 6.1.5 伪指令
结构的存储分配和预置
格式:变量 结构名称<赋值说明> LiPing STUDENT_RECORD <,,,’891011’>
LuiYi STUDENT_RECORD <‘LuiYi’,1,,’891011’,80H>
对结构的访问
格式:变量名.字段名 例如:MOV AL,LiPing.AGE 等价于: MOV AL,[BX].AGE
CODE_SEG
第6章:逻辑段的简化定义
.STACK [大小]
;堆栈段定义伪指令 .STACK 创建一个堆栈段,段名是: STACK 。可选的“大小”参数指定堆栈段所占存储区的 字节数,默认是1KB(=1024=400H字节)
.DATA
;数据段定义伪指令 .DATA 创建一个数据段,段名是: _DATA。数据段名可用@DATA预定义标识符表示
第6章 6.1.5 伪指令
TYPE、SIZE、LENGTH
见表6.3
段定义伪指令
SEGMENT/ENDS伪指令 成对使用,说明段的名称和范围,还可指明段 的定位类型、组合类型、分类名
段名
段名
SEGMENT [定位类型][组合类型][分类名] : 本段程序内容(指令或伪指令语句) ENDS
第6章 6.1.5 伪指令

第5章51汇编伪指令 优质课件

第5章51汇编伪指令 优质课件

www,
5.1 汇编语言的程序与语句
ASSUME语句来完成段分 配时,要注意以下几点:
1、在一个代码段中,如果没有另 外的ASSUME语句重新设置,原来 设置的ASSUME语句一直有效。 2、每条ASSUME语句可设置1-6个 段寄存器。
3、可用NOTHING删除以前的设置 例如:ASSUME ES:NOTHING 删除ES与某段的联系 ASSUME NOTHING 删除全部6 个段寄存器的设置。
www,
5.1 汇编语言的程序与语句
2、指定段寄存器伪指令
硬件系统在读取指令时,自动到代码段中读取,读取数据时自动到数据段。那么 CPU怎么知道哪个是代码段、哪个是数据段呢?指定段寄存器伪指令可以解决这 个问题。
格式:ASSUME CS: 段名
功能:建立逻辑段与代码段寄存器CS之间的对应关系。
4、段寄存器的装入:任何指令执 行时都将用到CS、DS、ES、SS 寄存器段基址才能形成真正的物理 地址。在执行这些指令之前,必须 先设置这些段寄存器的值,即段基 址。
www,
5.2 汇编语言的伪指令
5.2.1符号定义伪指令
1、表达式赋值伪操作EQU 指令格式:
符号名 EQU 表达式
MOV AX,MY-DATA MOV DS,AX
以上必须先将MY-DATA的段基址装入AX寄存器,然后再通过 AX装入DS,不能直接将MY-DATA的段基址装入DS寄存器。
Hale Waihona Puke www,5.1 汇编语言的程序与语句
3、汇编语言源程序完整段结构
•NAME 模块名
•EQU 定义语句
•。。。
;指令串或变量定义
•段名 ENDS
功能:定义当前段的名字与具体内容,同时规定段在存储器中的

汇编语言 PPT课件

汇编语言 PPT课件

;宏定义
shlext macro shloprand,shlnum
push cx
mov cl,shlnum
shl shloprand,cl
pop cx
endm
;宏指令
shlext ax,6
;宏展开
1
push cx
1
mov cl,06
1
shl ax,cl
1
pop cx
例5.5a
;统一4条移位指令的宏指令
xor al,al
sumd: add al,bx ;求和:AL←AL+DS:BX
inc bx
loop sumd
ret
checksumd endp end
列表文件
第5章
5.2 宏结构程序设计
宏汇编 重复汇编 条件汇编 ——统称宏结构
宏 Macro 是汇编语言的一个特点, 它是与子程序类似又独具特色的另一 种简化源程序的方法
例5.10
;;如果num < 100,则汇编如下语句 ;;否则,汇编如下语句
pdata 12 db 12 dup
pdata 102 db 100 dup
;宏调用① ;宏汇编结果①
;宏调用② ;宏汇编结果②
宏汇编、重复汇编和条件汇编
为源程序的编写提供了很多方便,
灵活运用它们可以编写出非常

良好的源程序来
例题5.4-2/3 mainend MACRO retnum ;;返回DOS,可不带参数
ifb <retnum> mov ah,4ch ;;没有参数
else mov ax,4c00h+ retnum AND 0ffh
;; 有参数 endif int 21h ENDM

伪指令

伪指令

方括号中为可选项,规定了逻辑段的一些其他特性
例:
DATA1 A DATA1 DATA2 DATA2 DATA3 C DATA3
DB
DB
DB
SEGMENT 1,2,3 ENDS SEGMENT 200 DUP(0) ENDS SEGMENT ?,?,? ENDS
STACK
CODE
SEGMENT
ASSUME DS:DATA1,ES:DATA3 CS:CODE,SS:DATA2 START: MOV AX,DATA1 MOV DS,AX MOV AX,DATA3 MOV ES,AX ┆ Q1: MOV AL,A Q2: MOV C,AL
A C8H
STR1 ‘H’
SUM
- -
‘I’
20H ‘O’ ‘K’ ‘!’
TABLE
3 3 3 7 3
0DH
0AH
‘$’ DATA1 0 0 0 0
3
3 7
……
为 0, 1,
10, 14
2. 段定义伪指令
因8086/8088 CPU的存储器是分段的,这就需要有段 定义语句。 与段有关的伪指令主要有: SEGMENT、ENDS、ASSUME 段定义伪指令的格式如下: 段名 SEGMENT [定位类型] [组合类型] [’类别’] ┇ 段名 ENDS
在前缀开始处安排了一条 INT 20H, 在过程结束时通过RET返回DOS。
AX,DATA DS,AX ;DATA → DS ES,AX ;DATA → ES ┇ ;具体程序 RET ;返回指令 MAIN ENDP ;过程结束 CODE ENDS ;代码段结束 END START ;源程序结束
MOV MOV MOV
字节变量的应用 X

汇编语言伪指令

汇编语言伪指令

汇编语言伪指令在汇编语言程序里,有一些特殊的助记符,这些助记符与指令系统的助记符不同,它们没有对应的机器码。

这些助记符在源程序中的作用是完成汇编程序的各种准备工作,包括定义变量、分配数据存储空间、控制汇编过程、定义程序入口等。

它们仅仅在汇编的过程中起作用,一旦汇编过程结束,它们的使命也就完成了。

这些助记符称为伪指令,它们所完成的操作称为伪操作。

不同汇编器的伪指令可能存在少量的区别,并非所有的伪指令在任何编译器上都能被识别。

一、符号定义伪指令符号定义(Symbol Definition)伪指令用于定义ARM汇编程序中的变量,对变量赋值和定义寄存器别名等,如表1所列。

表1 符号定义伪指令实例:GBLL P_ON ; 定义全局逻辑变量P_ON P_ON SETL {TRUE} ; 给全局逻辑变量P_ON赋值为真LCLA NUM ; 定义局部数字变量NUM NUM SETA 100 ; 给全局数字变量NUM赋值为100RegList RLIST {R0-R5,R8,R10} ; 定义一个寄存器列表RegList,可用微处理器系统结构与嵌入式系统设计(第3版)2; LDM/STM指令访问该列表二、数据定义伪指令数据定义(Data Denfinition)伪指令一般用于为特定的数据分配存储单元,同时完成对已分配存储单元的初始化工作。

数据定义伪指令如表2所示。

表2 数据定义伪指令从使用方法上来讲,数据定义伪指令可以分为以下3类。

1.SPACE伪指令SPACE用于分配一片连续的存储区,并初始化为0。

其中表达式中的数字表示分配的字节数。

SPACE也可以用%代替。

实例:DataSpace SPACE 100 ; 分配连续100字节的存储单元并初始化为0 2.MAP和FIELD伪指令MAP和伪指令FIELD经常结合在一起使用。

MAP用于定义一个结构化的内存表的首地址,可以用“^”替代。

FIELD用于定义一个结构化的内存表中的数据域,可以用“#”代替。

汇编语言基础伪指令

汇编语言基础伪指令

设DS已初始化,写出指令把M1的第一个数据元素存入AL
MOV AL,M1 ;直接寻址方式
写出指令把M1的第二个数据元素存入BH
MOV BH,M1+1 ;直接寻址,M1+1 称为地址表达式 26
例2
画出变量在内存中的存放示意图
不再关心段地址的具体数值
内存
D1 SEGMENT M1 DB 1,2 M2 DW 3456H,7
归纳: 2、定义数据的伪指令
DB 定义字节数据 Defin Byte 一般格式:
[变量名] DB 数1[,数2,… ][;注释]
其它几个定义数据的伪指令:
DB DW DD DQ DT
定义字节数据 Defin Byte,一个数据占1个字节 定义字数据 Defin Word, 一个数据占2个字节 定义双字数据 Defin Double word,一个数据占4个字节 定义的数据为4字型(8字节) 定义的数据为10字节型
12
三、伪指令
CPU不执行,而由汇编程序执行的语句
指示汇编程序(MASM.EXE)要完成的操作。 ➢用于定义变量、分配存储区、 ➢定义逻辑段、指示程序开始和结束等
汇编语言源程序 ——. ASM
汇编程序
机器语言 目标程序
13
重点掌握: 伪指令的格式及实现的操作 伪指令的应用 1、定义段的伪指令 2、定义数据的伪指令 3、变量的属性及属性操作符 4、定义字符串 5、问号?及DUP在DB和DW的应用
要点:
➢ 段的起始地址能被16整除 ➢ 每个段最大为64KB ➢ 最小视需要而定
设系统占用
00000H 1FFF1H
1FFF2H
1FFFFH
2000H:0000H 2000H:0001H 2000H:0002H 2000H:0003H

总复习第3章 汇编语言程序设计ppt课件

算术运算符 逻辑运算符 +(加法) -(减法) *(乘法) /(除法) MOD(求余) AND(与) OR(或) XOR(异或) NOT(非) 关系运算符 EQ(相等) NE(不等) LT(小于) GT(大于) GE(大于等于) 分析运算符 TYPE LENGTH SIZE OFFSET 属性运算符 PTR THIS SHORT HIGH LOW :
9
LE(小于等于) SEG
4)分析运算符 ①OFFSET运算符:利用运算符OFFSET可以得到一个标号或变 量的偏移量。 使用格式:OFFSET 变量名或标号名
②SEG运算符:利用运算符SEG可以得到一个标号或变量的 段基址 格式: SEG 变量名或标号名
10
③PTR运算符:用来指定存储器操作数的类型。 PTR的应用场合主要有两处:一种情况是当要访问的存储单元的 类型不确定时,可以用PTR明确指明要访问的存储单元的类型。如: MOV [BX],10H MOV BYTE PTR[BX],10H BX 10H
34
2. DOS软中断及系统功能调用
(2) DOS系统功能调用INT 21H
1. 设置功能号AH 2. 置入口参数 3. 执行INT 21H 4. 分析出口参数
注意:使用时保存好AH寄存器的内容
35
1)键盘输入(1号调用)
● 格式:
MOV AH,1 INT 21H
● 功能:等待从键盘输入一个字符→AL,同时将此字 符在屏幕上显示出来。 说明:系统执行该功能调用时将等待键盘输入,一旦按 键,就将其字符的ASCII码读入,首先检查是否是 〈CTRL〉+〈Break〉,若是,则从本调用的执行 中退出;否则,将ASCII码→AL,同时将该字符送显 示器显示。

大二汇编语句语法课件《伪指令》


4.2.3 程序开始和结束伪操作
1 . NAME 和 TITLE 伪操作 格式 : NAME 模块名 text(前6个字符/60个字符)
格式 : TITLE
在源程序开始可用 NAME 或 TITLE 为模块命名, 模块名的作用是指示给连接程序进行连接用。
源程序中可无模块定义,此时源文件名作为模块名。 模块命名的规则:NAMETITLE源文件名
4e 61 6e 48 75 61 49 4e 50 55 54 3a 0d 0a 24
str1 DW ‘abcd’
str2 DD ‘abcd’
‘N’ ‘a’ ‘n’ ‘H’ ‘u’ ‘a’ ‘I’ ‘N’ ‘P’ ‘U’ ‘T’ ‘:’ 0dH 0aH ‘$’
SEGMENT WORD PUBLIC ‘DATA’ …… DSEG1 ENDS DSEG2 SEGMENT WORD PUBLIC ‘DATA’ …… DSEG2 ENDS DATAGROUP GROUP DSEG1,DSEG2 CSEG SEGMENT PARA PUBLIC ‘CODE’ ASSUME CS:CSEG,DS:DATAGROUP START: MOV AX,DATAGROUP MOV DS,AX ……. MOV AX,4C00H INT 21H CSEG ENDS END START DSEG1
2. END伪操作
启动地址
格式
END
[标号]
多个程序模块相连,则只有主程序要使用标号, 其他子程序则只用END而不用指定标号
作用是指示源程序到此结束。
汇编程序对 END 之后的语句不进行处理。 程序中所有有效语句应放在 END 语句之前。 源程序中必须有 END 结束语句。 汇编程序对无 END 语句的源程序不进行处理,

格式和伪指令课件

➢每条指令都有对应的机器码,不同的CPU使用不同的 汇编语言 。
l用汇编语言编程的优点
➢汇编程序运行速度快,实时性好, 占用内存空间小,能 最大限度地发挥硬件的作用 。
l汇编语言的适用场合 ➢绝大部分系统软件都用汇编语言编写,大多数涉及快速
处理 、位处理和访问硬件设备的高效程序都是汇编程 序。如:实时数据处理程序 、实时控制程序 、高级绘 图程序 、游戏程序等 。
3) 操作数
u 1条指令可包含1个或2个操作数,也可没有操作数。 u 操作数的组成: ➢常数 二进制数,加B ;
10进制数,可加D或省略; 16进制数,加H,A~F前要加0; 2-10进制BCD数,加H,要用调整指令 ➢字符或字符串 用单引号‘ ’ 括起来
➢变量 程序运行期间可修改,数值可由DB、DW、DD等来定
PAGE(页) *NONE
‘STACK’
* PARA( 节 ) PUBLIC ‘ CODE’
WORD(字) STACK
BYTE(字节) COMMON AT
MEMORY
┇ 段名 ENDS
;段中内容
u加“[ ]”项可省略,但堆栈段的组合类型是STACK,不可省 略。
u省略项不写时,其值用带“*”的项,它们是隐含用法,用的 是默认值 。
CALL 过程名
4.变量定义语句
u变量定义语句的一般形式为:
变量名 伪指令指示符 操作数 ;注释
➢变量名用符号表示,也可以省略 。 ➢伪指令包括DB、DW、DD、DQ和DT,分别定义字
节 、字 、双字 、4字和10字节变量 。 ➢操作数可以有具体的字节 、字和双字等初值,也可以
不指定具体数值,而用一个问号“?”来表示,此时仅 为变量留出存储单元 。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档