微机原理 2.2 实验报告及过程分析

2.2  数据传送实验

2.2.1  实验目的

1.  掌握与数据有关的不同寻址方式。

2.  继续熟悉实验操作软件的环境及使用方法。

2.2.2  实验设备

PC 微机一台。

2.2.3  实验内容

本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目

标字符串到屏幕上。

程序设计要点:获取数据源的段地址和偏移地址,将源地址的数据一个一个

的复制到目的地址上去,直到字符串复制完成。传送数据的程序流程图如图 2-2-1

所示。

将源地址的段地址保存到DS中

将目的地址的段地址保存到ES中

读取字符串长度Len

从源地址复制一个字节到目的地址

源地址与目的地址的偏移地址自增

Len自减后是否为0

根据上述流程图编写实验程序(例程文件名:A2.ASM)

 

DATASEGMENT              ;定义数据段

MSR DB"HELLO,WORLD!$"

LEN EQU $- MSR

 

DATA ENDS

EXDASEGMENT               ;定义附加数据段

MSD DB LENDUP(?)

EXDA ENDS

MYSTACK SEGMENTSTACK    ;定义堆栈段

DW 20 DUP(?)

MYSTACK ENDS

CODESEGMENT               ;定义代码段

ASSUMECS:CODE,DS:DATA,ES:EXDA

START: MOVAX,DATA

MOV DS,AX               ;装载数据到 DS 中

MOV AX,EXDA

MOV ES,AX               ;装载附加数据到 ES 中

MOV SI,OFFSETMSR       ;设置 SI

MOV DI,OFFSETMSD      ;设置 DI

MOV CX,LEN

NEXT: MOVAL,[SI]            ;开始传输数据

MOV ES:[DI],AL

INC SI

INC DI

DEC CX

JNZ NEXT

PUSH ES

POP DS                   ;将附加段寄存器指向的段值赋给数据段寄存器

MOV DX,OFFSETMSD

MOV AH,9

INT 21H

KEY: MOVAH,1               ;判断是否有按键按下?

INT 16H                  ;(为观察运行结果,使程序有控制的退出)

JZ KEY

MOVAX,4C00H           ;结束程序退出

INT 21H

CODE ENDS

END START

2.2.4  实验步骤

(1)  编辑源代码

将程序源码编辑完成之后修改文件名为 A2.asm, 并保存在目录 D:\MYCODE

下。

(2)  编译 A2.asm 文件

进入 DOS 系统打开 D 盘 MYCODE 文件夹所在目录,并编译 A2.asm 文件,

知道编译无错误。如图 2-2-2 所示。

微机原理 2.2 实验报告及过程分析_第1张图片

图 2-2-1   生成 A2.obj 文件

(3)  链接 A2.obj 文件

使用 LINK 命令链接 A2.obj 文件,生成 A2.exe 文件。运行 A2.exe 文件,查

看运行结果。如图 2-2-3 所示。

微机原理 2.2 实验报告及过程分析_第2张图片

图 2-2-3   生成 A2.exe 文件

运行程序后,屏幕显示“HELLO,WORLD!”。说明程序运行正确。下

面我们通过调试查看内存数据,来了解数据的传输过程。

(4) DEBUG 调试

输入命令 D:\masm5.0>debug a2.exe  回车可进入调试系统,首先对 a2.exe 进行

反汇编,如图 2-2-4 所示。

微机原理 2.2 实验报告及过程分析_第3张图片

图 2-2-4   a2.exe 反汇编

 

从反汇编的程序上可以看出,原字符串存放的段地址为 0x141E,偏移地址

为 0x0000,复制字符串的目的地址的段地址为 0x141F,偏移地址为 0x0000,

字符串的长度为 0x0E。下面通过内存查看命令查看源地址和目的地址的数据情

况,如图 2-2-5 所示。

微机原理 2.2 实验报告及过程分析_第4张图片

图 2-2-5   源地址与目的地址的数据

从图 2-2-5 可直接看出原地址所存放的数据为“HELLO,WORLD!”,目的地

址存放的数据全部为 0。现将程序运行至 1423:001B处,程序运行到此处时,

可完成一个字节的数据传输,查看目的地址的内存数据。如图 2-2-6 所示。

微机原理 2.2 实验报告及过程分析_第5张图片

图 2-2-6   传输一个字节后目的地址的数据

传输一个字节后可在目的地址的第一个数据位 0x48,其 ASCII 码为‘H’。

同时也可观察 AX 寄存的低 8 位也为 0x48。将程序运行至 1423:001D 处,此时

程序已经跳出了数据传送的循环,数据的传送工作已将完成。查看目的地址的内

存数据,如图 2-2-7 所示。

微机原理 2.2 实验报告及过程分析_第6张图片

图 2-2-7   数据传送完成后目的地址的数据

由图 2-2-7 可直接看出数据传送完成之后目的地址存放的数据与源地址存放

的数据一致,说明数据传送完成,程序正确无误。

你可能感兴趣的:(微机原理)