计算机硬件基础实验1【汇编程序设计】

实验平台:虚拟仿真实验教学平台

一.实验目的

掌握虚拟实验平台微机原理及接口技术教学实验系统的操作,熟悉实验台的操作环境。
掌握不同进制数及编码相互转换的程序设计方法。

二.实验内容

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.程序开头定义的堆栈段,虽然没有被显式用到,在发生中断,调用程序时会隐式用到堆栈段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值