实验平台:虚拟仿真实验教学平台
一.实验目的
掌握虚拟实验平台微机原理及接口技术教学实验系统的操作,熟悉实验台的操作环境。
掌握不同进制数及编码相互转换的程序设计方法。
二.实验内容
1、编写程序,将00~0FH共16个数写入内存3000H开始的连续16个存储单元中。
2、编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。
3、编写程序,将ASCII字符串‘8A’转换成十六进制。(选做)
三.实验原理
1、
(1)利用AX寄存器将数据段寄存器DS的值设为0,即数据段的段基址从0开始
(2)利用SI存放偏移地址,建立数据在内存的数据段的起始地址
(3)利用AX的低8位AL寄存器存放写入的数,将其内容复制到内存对应位置
(4)重复(3)十六次,即到CX寄存器里的值变0,每次偏移地址和数值加1
(5)利用中断退出程序
2、
(1)模仿上述的方法1,将从内存3500H单元开始的8个单位依次赋值为00~07H
(2)利用SI存放3500H开始的偏移地址,利用DI存放3600H开始的偏移地址
(3)借助AX的低8位AL寄存器,将3500H内存单元数据复制到3600H内存单元中
(4)重复(3)八次,即到CX寄存器里的值变0,每次偏移地址和数值加1
利用中断程序退出
四.实验步骤
【1】整体流程
(1)编写程序
(2)发送场景信息,发送代码信息,编译,在程序终止前设置断点,运行代码。
(3)查看存储器相应单元的信息。
【2】程序流程图
1.
2.
程序如下:
Lab1_1.asm
sstack segment stack;定义堆栈段
dw 32 dup(?)
sstack ends
code segment
assume cs:code,ss:sstack
start: push ds;这个可做可不做
xor ax,ax;清空
mov ds,ax;段基址从0开始
mov si,3000H;偏移地址,建立数据起始地址
mov cx,16;计数次数,循环次数
aa1: mov [si],al;al是8位的,默认为00
inc si;地址加一
inc al;数据加一
loop aa1
mov ax,4C00H;退出程序的标准操作
int 21H;
code ends
end start
Lab1_2.asm
sstack segment stack;定义堆栈段
dw 32 dup(?)
sstack ends
code segment
assume cs:code,ss:sstack
start: push ds;这个可做可不做
xor ax,ax;清空
mov ds,ax;段基址从0开始
mov si,3500H;偏移地址,建立数据起始地址
mov cx,8;计数次数,循环次数
aa1: mov [si],al;al是8位的,默认为00
inc si;地址加一
inc al;数据加一
loop aa1
mov si,3500H
mov di,3600H
mov cx,8
aa2: mov al,[si]
mov [di],al
inc si
inc di
loop aa2
mov ax,4C00H;退出程序的标准操作
int 21H;
code ends
end start
五.实验结果
1、
可以看到段基址0000H,偏移地址3000H开始16个内存单元的值依次被赋于了从00H到0FH的数值。
2、
以上为内存中偏移地址为3500H开始的内容。
可以看到成功将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。
六.实验总结
1.将一个内存中的数据复制到另个内存地址处时不能直接MOV,需借用寄存器作为中间商进行复制。
2.程序开头定义的堆栈段,虽然没有被显式用到,在发生中断,调用程序时会隐式用到堆栈段。