|
注册会员

- UID
- 3417
- 帖子
- 224
- 精华
- 0
- 积分
- 1456
- 经验值
- 531 点
- 威望
- 504
- 贡献
- 0
- 巧巧币
- 18 元
- 阅读权限
- 20
|
2#
大 中
小 发表于 2007-3-12 10:23 只看该作者
3.1.2 汇编、连接和运行一个程序 建立可执行的汇编语言程序的三个步骤:
(1)用编辑程序(EDIT)建立ASM源文件;
(2)用汇编程序(MASM)把ASM文件转换为OBJ文件;
(3)用连接程序(LINK)把OBJ文件转换为EXE文件。
建立, 运行汇编语言程序
C>EDIT MYFILE.ASM<CR>
C>MASM MYFILE.ASM<CR>
Microsoft (R) Macro Assembler Version 5.10
Copyright (C) Microsoft Corp 1981,1988.All rights reserved.
Object filename [MYFILE.OBJ]: <CR>
Source listing [NUL.LST]: MYFILE.LST<CR>
Cross-reference [NUL.CRF]: <CR>
47962 + 413345Bytes symbol space free
0 Warning Errors
0 Severe Errors
C>LINK MYFILE.OBJ<CR>
Microsoft (R) Overlay Linker Version 3.64
Copyright (C) Microsoft Corp 1983-1988. All rights reserved.
Run File [MYFILE.EXE]: <CR>
List File [NUL.MAP]: <CR>
Libraries [.LIB]: <CR>
LINK : warning L4021: no stack segment
C>MYFILE<CR> 练习题3. 将下列文件类型填入空格:
(1) .obj (2) .exe (3) .crf (4) .asm (5) .lst (6) .map
编辑程序输出的文件有_________________;
汇编程序输出的文件有_______________;
连接程序输出的文件有_______________。
答案:
编辑程序输出文件: (4)
汇编程序输出文件: (1), (3), (5)
连接程序输出文件: (2), (6)
3.1.3 数据类型和数据定义
1. 数据类型
8086/8088使用的数据类型是8位或16位的正数和负数。在计算机内部,负数用补码形式表示。
2. 数据定义伪操作
ORG 指定数据的存储地址或代码段的起始地址
例: ORG 100H
DATA1 DB 100
例: ORG 100H
START: MOV AX,BX
DB 定义字节, 是唯一能定义字符串的伪操作.
; List File for DB Examples
0000 19 DATA1 DB 25
0001 89 DATA2 DB 10001001B
0002 12 DATA3 DB 12H
0010 ORG 0010H
0010 32 35 39 31 DATA4DB ‘2591’
0018 ORG 0018H
0018 00 DATA5 DB ?
0020 ORG 0020H
0020 4D 79 20 6E 61 6D DATA6 DB ‘My name is Joe’
65 20 69 73 20 4A
6F 65
002E 0A 10 02 31 30 42 DATA7 DB 10,10H,10B,‘10B’
DW 字
; List File for DW Examples
0070 ORG 70H
0070 03BA DATA DW 954
0072 0954 DATA9 DW 100101010100B
0074 253F DATA10 DW 253FH
0076 FFFB DATA11 DW -5
0080 ORG 80H
0080 0009 FFFF 0007 000C
0020 0064 4849
DATA11 DW 9,-1,7,0CH,00100000B,100,‘HI’
练习题6. 对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么?
◆DTSEG SEGMENT
ORG 10H
DATA1DB 72H
DB 04H
DTSEG ENDS
◆DTEG SEGMENT
ORG 10H
DATA1 DW 7204H
DTSEG ENDS
答案: 不一样. 分别是72H, 04H和04H, 72H. 存储字时低8位存在低字节,高8位存在高字节.
练习题7. 下面的数据项设置了多少个字节?
(1) ASC_DATA DB ‘1234’
(2) HEX_DATA DB 1234H
答案: (1) 设置了4个字节;(2) 设置了2个字节
DD 定义双字
; List File for DD Examples
00A0 ORG 00A0H
00A0 000003FF DATA13 DD 1023
00A4 0008965C DATA14 DD 10001001011001011100B
00A8 5C2A57F2 DATA15 DD 5C2A57F2H
00AC 00000023 00034789 DATA16 DD 23H,34789H,65533
0000FFFD DQ定义4字
DT 为压缩的BCD数据分配存储单元
; List File for DQ ,DT Examples
00C0 ORG 00C0H
00C0 C223450000000000 DATA17 DQ 4523C2H
00C8 4948000000000000 DATA18 DQ ‘HI’
00D0 0000000000000000 DATA19 DQ ?
00E0 ORG 00E0H
00E0 2998564379860000 DATA20 DT 867943569829
0000
00EA 0000000000000000 DATA21 DT ?
0000
•DUP 按照给定的次数来复制某个(某些)操作数 ; List File for DUP Examples
0100 ORG 0100H ;设置32个字节空间
0100 0020[ DATA22 DB 32 DUP(?)
??
]
0120 ORG 0120H
0120 0005[ DATA23 DB 5 DUP(2 DUP(99));以99充满10个字节
0002[
63
]
]
012A 0008[ DATA24 DW 8 DUP(?) ;设置8个字空间
????
]
练习题5. 下面的数据项定义了多少个字节?
DATA_1 DB 6 DUP(4 DUP(0FFH))
答案: 24字节
•EQU 赋值伪操作
• = 赋值伪操作
COUNT EQU25
COUNTER1 DB COUNT
COUNTER2 DB COUNT TEMP=25
TEMP=TEMP+1
|