汇编语言程序设计第四章 汇编语言程序格式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14
可以用DW或DD伪操作把变量或标号的偏移地址 (DW)或整个地址(DD)存入存储器。 用DD操作存入地址时:
第一个字为偏移地址,第二个字为段地址。
例: PARAMETER_TABLE DW PAR1 DW PAR2 DW PAR3 INTERSEG_DATA DD DATA1 DD DATA2
mov ax,data
;data segment addr
mov ds,ax
;into DS register
;set ES register to current extra segment
mov ax,extra
;extra segment addr
mov es,ax
;into ES register
6
4)经DEBUG的调试
7
8
9
伪操作
又称伪指令: 是在汇编期间由汇编程序处理的操作 不是机器指令,不是程序运行时执行的 主要完成数据定义、分配内存、程序框
架定义、指示程序结束等功能 相似于高级语言的指示性语句
10
4.2.1 数据定义及存储器分配伪操作
格式:[变量名] Mnemonic Oprand,…Oprand[;Comments] 操作数(Oprand)把数据放入指定的单元
1)用编辑程序建立源文件: ex_movs.asm
;例:把40个字母a的字符串从源缓冲区传送到目的缓冲区。
;PROGRAM TITLE GOES HERE-ex-movs
;****************************************************
data segment
;define data segment
source_buffer db 40 dup('a')
data ends
;****************************************************
extra segment
;define extra segment
dest_buffer db 40 dup(?)
;set DF flag to forward
mov cx,40
;put count in CX
rep movsb
;move entire string
ret
;return to DOS
main endp
;end of main part of program
;----------------------------------------------------
extra ends
2
code segment
;define code segment
;----------------------------------------------------
main proc far
;main part of program
assume cs: code, ds: data, es: extra
助记符(Mnemonic)字段说明所用伪操作的数据类型,常用的 有以下几种: DB: 字节(8位) DW: 字(16位) DD: 双字(32位) DQ: 四个字(64位),存放双精度浮点数。 DT: 十个字节,形成压缩的BCD码。
11
数据定义伪操作:把数据存入存储单元;分配空间; DW和DD可存储偏移地址或完整的地址。
下面举例说明:
例: 操作数可以是常数,或者
0 A 10d
04
4
表达式(根据表达式可以求得一 个常数),如
1 0 10h
6 4 100d 00
DATA_BYTE DB 10,4,10H DATA_WORD DW 100,100H,-5
0 0 100h 01
F B -5 FF
DATA_DW
DD 3*20,0FFFDH 3 C
13
操作数可以使用复制操作符来复制某个操作数。 其格式为:
repeat_count DUP(operand,……operand)
repeat_count:可以是一个表达式,它的值应该 是一个正整数,用来指定括号中的操作数的重复次数。
例:ARRAY1 DB 100 DUP(?)
例 :DUP操作可以嵌套, ARRAY3 DB 100 DUP(0,2 DUP(1,2),0,3)
3
;MAIN PART OF PROGRAM GOES HERE
lea si,source_buffer ;put offset addr of source buffer in SI
lea di,dest_buffer ;put offset addr of dest buffer in DI
cld
code ends
;end of code segment
;****************************************************
end start
;end of assembly
4
2)用MASM程序把ASM文件转换成OBJ文件;
5
3)用LINK程序把OBJ文件转换成EXE文件;
第四章 汇编语言程序格式
4.1汇编程序功能
汇编语言程序的建立及汇编过程:
编辑程序
EDIT.exe Notepad. exe
PROGR.ASM 文件
汇编程序
PROGR.OBJ 文件
MASHale Waihona Puke Baidu.exe
连接程序
LINK.exe
EXE程序还需经DEBUG的调试
PROGR.EXE 文件
1
在计算机上运行汇编语言程序的步骤是:
0 0 60d
00
汇编程序在汇编期间在存储器中
00
存入数据,如图所示
FD
F F 0FFFDh 00
00
12
例 :操作数也可以是字符串,如: MESSAGE DB ‘HELLO’
例:DATA DW ‘AB’, ‘CD’
注意:1、不能写为 DW ’ABCD‘ 2、用DB与DW来定义字符串的区别
例 :操作数?可以保留存储空间,但不存入数据。 如: ABC DB 0,?,?,?,0 DFF DW ?,52,?
start:
;starting execution address
;set up stack for return
push ds
;save old data segment
sub ax,ax
;put zero in AX
push ax
;save it on stack
;set DS register to current
可以用DW或DD伪操作把变量或标号的偏移地址 (DW)或整个地址(DD)存入存储器。 用DD操作存入地址时:
第一个字为偏移地址,第二个字为段地址。
例: PARAMETER_TABLE DW PAR1 DW PAR2 DW PAR3 INTERSEG_DATA DD DATA1 DD DATA2
mov ax,data
;data segment addr
mov ds,ax
;into DS register
;set ES register to current extra segment
mov ax,extra
;extra segment addr
mov es,ax
;into ES register
6
4)经DEBUG的调试
7
8
9
伪操作
又称伪指令: 是在汇编期间由汇编程序处理的操作 不是机器指令,不是程序运行时执行的 主要完成数据定义、分配内存、程序框
架定义、指示程序结束等功能 相似于高级语言的指示性语句
10
4.2.1 数据定义及存储器分配伪操作
格式:[变量名] Mnemonic Oprand,…Oprand[;Comments] 操作数(Oprand)把数据放入指定的单元
1)用编辑程序建立源文件: ex_movs.asm
;例:把40个字母a的字符串从源缓冲区传送到目的缓冲区。
;PROGRAM TITLE GOES HERE-ex-movs
;****************************************************
data segment
;define data segment
source_buffer db 40 dup('a')
data ends
;****************************************************
extra segment
;define extra segment
dest_buffer db 40 dup(?)
;set DF flag to forward
mov cx,40
;put count in CX
rep movsb
;move entire string
ret
;return to DOS
main endp
;end of main part of program
;----------------------------------------------------
extra ends
2
code segment
;define code segment
;----------------------------------------------------
main proc far
;main part of program
assume cs: code, ds: data, es: extra
助记符(Mnemonic)字段说明所用伪操作的数据类型,常用的 有以下几种: DB: 字节(8位) DW: 字(16位) DD: 双字(32位) DQ: 四个字(64位),存放双精度浮点数。 DT: 十个字节,形成压缩的BCD码。
11
数据定义伪操作:把数据存入存储单元;分配空间; DW和DD可存储偏移地址或完整的地址。
下面举例说明:
例: 操作数可以是常数,或者
0 A 10d
04
4
表达式(根据表达式可以求得一 个常数),如
1 0 10h
6 4 100d 00
DATA_BYTE DB 10,4,10H DATA_WORD DW 100,100H,-5
0 0 100h 01
F B -5 FF
DATA_DW
DD 3*20,0FFFDH 3 C
13
操作数可以使用复制操作符来复制某个操作数。 其格式为:
repeat_count DUP(operand,……operand)
repeat_count:可以是一个表达式,它的值应该 是一个正整数,用来指定括号中的操作数的重复次数。
例:ARRAY1 DB 100 DUP(?)
例 :DUP操作可以嵌套, ARRAY3 DB 100 DUP(0,2 DUP(1,2),0,3)
3
;MAIN PART OF PROGRAM GOES HERE
lea si,source_buffer ;put offset addr of source buffer in SI
lea di,dest_buffer ;put offset addr of dest buffer in DI
cld
code ends
;end of code segment
;****************************************************
end start
;end of assembly
4
2)用MASM程序把ASM文件转换成OBJ文件;
5
3)用LINK程序把OBJ文件转换成EXE文件;
第四章 汇编语言程序格式
4.1汇编程序功能
汇编语言程序的建立及汇编过程:
编辑程序
EDIT.exe Notepad. exe
PROGR.ASM 文件
汇编程序
PROGR.OBJ 文件
MASHale Waihona Puke Baidu.exe
连接程序
LINK.exe
EXE程序还需经DEBUG的调试
PROGR.EXE 文件
1
在计算机上运行汇编语言程序的步骤是:
0 0 60d
00
汇编程序在汇编期间在存储器中
00
存入数据,如图所示
FD
F F 0FFFDh 00
00
12
例 :操作数也可以是字符串,如: MESSAGE DB ‘HELLO’
例:DATA DW ‘AB’, ‘CD’
注意:1、不能写为 DW ’ABCD‘ 2、用DB与DW来定义字符串的区别
例 :操作数?可以保留存储空间,但不存入数据。 如: ABC DB 0,?,?,?,0 DFF DW ?,52,?
start:
;starting execution address
;set up stack for return
push ds
;save old data segment
sub ax,ax
;put zero in AX
push ax
;save it on stack
;set DS register to current