实验二 伪指令实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二伪指令实验
一、实验目的
1.掌握数据定义伪指令的使用方法;
2.掌握符号定义伪指令的使用方法;
3.掌握段定义伪指令的使用方法
4.掌握各种数据在内存中的存放形式。
二、实验要求
1.学会使用数据定义伪指令定义字节数据、字数据、双字数据、四字数据及十字数据;
2.学会使用DEBUG中的D命令观察字节数据、字数据、双字数据等在内存中的存放格式;
3.学会使用DEBUG中的D命令观察带符号数据和不带符号数据在内存中的存放形式;
4.学会使用DEBUG中的D命令观察实数在内存中的存放形式。
三、实验举例
【例3.2】 编辑、汇编、连接下列程序段,然后在DEBUG下观察数据的存储格式。
【步骤一】 启动EDIT编辑器,编辑源程序。
程序清单如下:
CSEG SEGMENT
X1 DB 0AH,0BH,0CH,0DH,31H,32H,33H,34H
X2 DB 10,11,12,13,14,15,16,17,18
X3 DB -1,-2,-3,-4,-5,-6,-7,-8
Y1 DB 25+25,78-34,15*4,90/3
Y2 DB 80 MOD 9,3 DUP(50)
Y3 DB ‘ABCDEFGH’
Z1 DW 1234H,5678H,0ABCDH,0ABEFH
Z2 DW -1,-2,-3,-4,-5,-6,-7,-8
Z3 DW OFFSET Y3,3 DUP(0),OFFSET Z2,3 DUP(?)
CSEG ENDS
END
程序输入完毕,以EXAM2.ASM为文件名存入磁盘,进行下一步操作。
【步骤二】 对源程序EXAM2.ASM进行汇编,生成目标程序EXAM2.OBJ。
操作如下:
C:>\MASM EXAM2;↙
屏幕显示如下信息:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
50554 + 449926 Bytes symbol space free
0 Warning Errors
0 Severe Errors
汇编通过,没有错误信息产生,进行下一步操作。
【步骤三】 对目标程序EXAM2.OBJ进行连接,生成执行程序EXAM2.EXE。
操作如下:
C:>\LINK EXAM2;↙
屏幕显示如下信息:
Microsoft (R) Segmented-Executable Linker Version 5.13
Copyright (C) Microsoft Corp 1984-1991. All rights reserved.
LINK: warning L4021: no stack segment
LINK: warning L4038: program has no starting address
连接过程产生两个错误信息。
① no stack segment
此错误信息是说源程序没有设置堆栈段,该错误不影响程序的执行,可以忽略。
② program has no starting address
此错误信息是说源程序没有设置起始地址,该错误也不影响程序的执行,可以忽略。
以上两个错误信息可以忽略,进行下一步操作。
【步骤四】 进入DEBUG状态,在DEBUG下用D命令观察数据在内存中是如何存储的。操作如下:
C:>\DEBUG EXAM2.EXE↙
-D CS:0 4F↙
命令发出后,屏幕显示如下信息:
0B9B:0000 0A 0B 0C 0D 31 32 33 34-0A 0B 0C 0D 0E 10 11 12 ....1234........
0B9B:0010 FF FE FD FC FB FA F9 F8-0E 0A 0F 02 08 50 50 50 ................
0B9B:0020 41 42 43 44 45 46 47 48-34 12 78 56 CD AB EF AB ABCDEFGH4.xV....
0B9B:0030 FF FF FE FF FD FF FC FF-FB FF FA FF F9 FF F8 FF ................
0B9B:0030 20 00 00 00 00 00 00 00-30 00 00 00 00 00 00 00 .......0.......
注意:因为没有段说明语句,所以数据是存储在CS(代码)段的,因此要使用D来查看CS段内容。CS段0~4F号单元的内容,即是我们用伪指令定义的数据。
四、实验内容
1.编辑、汇编、连接下列程序段。然后在DEBUG中,用D命令观察DB定义的数据在内存中的存放格式。
程序段如下:
DSEG SEGMENT
A1 DB 1, 18, 25H, 80H, -128,‘ABC’
A2 DB 3*5, 48/4, 36-5, 26 MOD 10
A3 DB ?, ?, 36H, -1, 36Q
A4 DB 5 DUP(26),3 DUP(?)
A5 DB 2 DUP(2 DUP(4), 15), 7FH
DSEG ENDS
END
2.编辑、汇编、连接下列程序段。然后在DEBUG中,用D命令观察DW定义的数据在内存中的存放格式。
程序段如下:
DSEG SEGMENT
B1 DW 1234H, -5678H, 8000H, ’XY’
B2 DW 256*16, 46H, -25
B3 DW ?, OFFSET B1
B4 DW 3 DUP(1234H)
DSEG ENDS
END