实验二 汇编命令(伪指令)实验
一、实验目的
(1)进一步熟悉汇编语言的汇编、连接、运行的全过程。
(2)了解汇编语言的程序结构、掌握动态调试工具DEBUG的使用。
(3)掌握部分伪指令的功能,编程时会使用伪指令。
(4)熟悉汇编语言中数据定义伪指令的书写形式。
(5)掌握DEBUG的使用。
二、实验要求
(1)仔细阅读教材中有关伪指令部分;
(2)仔细阅读实验教程中DEBUG的使用部分;
(3)用DEBUG中的D或E命令检查带符号数据和不带符号数据在内存中的表示方法;
(4)用DEBUG中的D命令观察DB、DW、DD存储整数数据的格式;
(5)用DEBUGG中的D命令观察DD存储实数的格式。
三、实验步骤
(1)编写一个汇编程序,使用DW、DB、DD命令向内存写入数据(如图2-1)。
图2-1 使用DW、DB、DD命令向内存写入数据
(2)使用debug命令观察存储数据的格式。
①使用-u命令观察指令所在地址和指令的具体实现。可以观察到指令的初始地址为076A:0000(如图2-2)。
图2-2 用u命令查看指令地址
②使用-d命令查看076A:0000到076A:0070的数据内容
图 2-3 用d命令查看数据
四、实验结果
我们使用DW、DB、DD写入相同的4个字(64位)数据,但是通过观察,我们发现它们在内存中的位置并不是我们想的那样按顺序安放。
076A:0000 23 01 56 04 89 07 11 10 (DW)
076A:0008 01 23 04 56 07 89 10 11 (DB)
076A:0010 56 04 23 01 11 10 89 07 (DD)
我们可以发现DB以字节写入的数据是按顺序安放的,而DB和DW却不是这样。我们可以理解为:高地址存高位,低地址存低位。例如0123H,用DW写入,01是高位放在高地址,23是低位放在低地址,这就体现了DW是按字存储的,将字拆分成两个字节存储。
附源代码
CODESEG SEGMENT
ASSUME CS:CODESEG
DW 0123H,0456H,0789H,1011H
DB 01H,23H,04H,56H,07H,89H,10H,11H
DD 01230456H,07891011H
MOV AH,4CH
INT 21H
CODESEG ENDS
END
最后附上实验报告供大家参考,顺便鄙视一下CSDN的下载内容需要积分这类方式,开源就开源嘛,搞什么稀奇?
https://files.cnblogs.com/files/jdemarryme/%E6%B1%87%E7%BC%96%E5%AE%9E%E9%AA%8C%E4%BA%8C.pdf