微机原理 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生成 A2.obj 文件
(3)链接 A2.obj 文件
使用 LINK 命令链接 A2.obj 文件,生成 A2.exe 文件。运行 A2.exe 文件,查
看运行结果。如图 2-2-3 所示。
文章图片
图 2-2-3生成 A2.exe 文件
运行程序后,屏幕显示“HELLO,WORLD!”。说明程序运行正确。下
面我们通过调试查看内存数据,来了解数据的传输过程。
(4) DEBUG 调试
输入命令 D:\masm5.0>debug a2.exe回车可进入调试系统,首先对 a2.exe 进行
反汇编,如图 2-2-4 所示。
文章图片
图 2-2-4a2.exe 反汇编
从反汇编的程序上可以看出,原字符串存放的段地址为 0x141E,偏移地址
为 0x0000,复制字符串的目的地址的段地址为 0x141F,偏移地址为 0x0000,
字符串的长度为 0x0E。下面通过内存查看命令查看源地址和目的地址的数据情
况,如图 2-2-5 所示。
文章图片
图 2-2-5源地址与目的地址的数据
从图 2-2-5 可直接看出原地址所存放的数据为“HELLO,WORLD!”,目的地
址存放的数据全部为 0。现将程序运行至 1423:001B处,程序运行到此处时,
可完成一个字节的数据传输,查看目的地址的内存数据。如图 2-2-6 所示。
文章图片
【微机原理 2.2 实验报告及过程分析】图 2-2-6传输一个字节后目的地址的数据
传输一个字节后可在目的地址的第一个数据位 0x48,其 ASCII 码为‘H’。
同时也可观察 AX 寄存的低 8 位也为 0x48。将程序运行至 1423:001D 处,此时
程序已经跳出了数据传送的循环,数据的传送工作已将完成。查看目的地址的内
存数据,如图 2-2-7 所示。
文章图片
图 2-2-7数据传送完成后目的地址的数据
由图 2-2-7 可直接看出数据传送完成之后目的地址存放的数据与源地址存放
的数据一致,说明数据传送完成,程序正确无误。
推荐阅读
- 做一件事情的基本原理是什么()
- 【读书笔记】贝叶斯原理
- gitlab|Gitlab升级(12.2.1到14.6.4)
- 2020-12(完成事项)
- SG平滑轨迹算法的原理和实现
- “写作宝典”《金字塔原理》之读书笔记
- 2019.02.26
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- Vue源码分析—响应式原理(二)