微机原理-数据传送实验

一、实验目的:

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

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

 

二、实验环境:

PC 微机一台。

三、实验内容:

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

程序设计要点:获取数据源的段地址和偏移地址,将源地址的数据一个一个的复制到目的地址上去,直到字符串复制完成。传送数据的程序流程图如图 2-2-1 所示。

图 2-2-1  数据传送流程图

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

DATA SEGMENT             ;定义数据段

    MSR DB "HELLO,WORLD!$" 

    LEN EQU $- MSR

DATA ENDS

EXDA SEGMENT              ;定义附加数据段

    MSD DB LEN DUP(?)

EXDA ENDS

MYSTACK SEGMENT STACK   ;定义堆栈段

    DW 20 DUP(?)

MYSTACK ENDS

CODE SEGMENT              ;定义代码段

    ASSUME CS:CODE,DS:DATA,ES:EXDA

START: MOV AX,DATA

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

    MOV AX,EXDA

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

    MOV SI,OFFSET MSR      ;设置 SI

    MOV DI,OFFSET MSD     ;设置 DI

    MOV CX,LEN

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

    MOV ES:[DI],AL

    INC SI

    INC DI

    DEC CX

    JNZ NEXT

    PUSH ES

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

    MOV DX,OFFSET MSD

    MOV AH,9

    INT 21H

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

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

    JZ KEY

    MOV AX,4C00H          ;结束程序退出

    INT 21H

CODE ENDS

    END START

实验步骤:

  1. 编辑源代码

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

下。

  1. 编译 A2.asm 文件

进入 DOS 系统打开 E 盘 MYCODE 文件夹所在目录,并编译 A2.asm 文件,知道编译无错误。如图 2-2-2 所示。

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

运行程序后,屏幕显示“HELLO,WORLD!”。说明程序运行正确。下面我们通过调试查看内存数据,来了解数据的传输过程。

  1. DEBUG 调试

输入命令E:\masm5.0>debug a2.exe可进入调试系统,首先对 a2.exe 进行反汇编,如图 2-2-4 所示。

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

 

从反汇编的程序上可以看出,原字符串存放的段地址为 1434,偏移地址为 0x0000,复制字符串的目的地址的段地址为 1435,偏移地址为 0x0000,字符串的长度为 0x0E。下面通过内存查看命令查看源地址和目的地址的数据情况,如图 2-2-5 所示。

 

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

从图 2-2-5 可直接看出原地址所存放的数据为“HELLO,WORLD!”,目的地址存放的数据全部为 0。现将程序运行至 1439:001B 处,程序运行到此处时,可完成一个字节的数据传输,查看目的地址的内存数据。如图 2-2-6 所示。

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

传输一个字节后可在目的地址的第一个数据位 0x48,其 ASCII 码为‘H’。同时也可观察 AX 寄存的低 8 位也为 0x48。将程序运行至 1439:001D 处,此时程序已经跳出了数据传送的循环,数据的传送工作已将完成。查看目的地址的内存数据,如图 2-2-7 所示。

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

由图 2-2-7 可直接看出数据传送完成之后目的地址存放的数据与源地址存放的数据一致,说明数据传送完成,程序正确无误。

猜你喜欢

转载自blog.csdn.net/xu_benjamin/article/details/85267006