8086实验指导

2019-04-14 16:47

8086实验1 设备使用及简单示例程序验证

一.实验目的

1 熟悉软件编程环境和硬件设备资源

2 熟悉工程创建的步骤,其中各个文件作用

3 掌握软件菜单的使用,掌握程序的调试基本步骤。 二.实验内容

以课本例4-1为源文件创建工程

进行工程的调试,查看程序运行过程和结果 三.实验仪器

微机、WAVE6000编程环境,实验箱 注意:

文件不要用中文名称,保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。 调试过程:

2 查看存储器菜单使用:窗口---数据窗口---MEMORY,观察或者修改MEMORY内容。 3 查看CPU寄存器:窗口---CPU窗口,CPU寄存器

4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。

ASSUME CS:CSEG , DS:DSEG , ES:ESEG

SUM DW 2 DUP(?) DUP (duplicate) 含义如下: 定义变量(数组)SUM,类型为字(DW),大小为2,内容不定(?)

编译器设置:编译器将用户定义的数据段分配在0400H(0040H×16)开始的存储器中。数据段段基址寄存器DS(0040H)。 查看数据的方法:

窗口---数据窗口--- MEMORY ---0400的位置就是你定义的数据段的数据:

物理地址=段基址(DS)×16+段内偏移

参考程序及流程图: 见课本例4-1

8086实验2 简单程序设计--存储块移动

一.实验目的

1 熟悉86汇编语言程序结构

2 熟悉循环结构程序的编写,进一步熟悉指令系统寻址方式 3 熟悉编程环境和程序的调试 二.实验内容

将指定源地址和长度(100字节)的存储块移动到目的地址。 三.实验仪器:微机、WAVE6000软件,实验箱

注意:1 源数据块和目的数据块自己在数据段中定义。

2 要查看移动后结果,定义时对源和目的块赋不同的值 S db 25 dup(11h) 含义? dup (duplicate) 定义数组S,大小为25,类型为字节(DB),全部赋值为11h

3 同实验一,数据段分配在0400H开始的存储器中 流程图如右: 两种移动的方式:

1利用循环结构编程移动方式

2利用重复指令(movsb)编程方式

参考程序

利用重复指令(movsb)编程方式 移动 256 字节 data segment

Source db 256 dup(055h) Target db 256 dup(0aah) data ends

code segment

assume cs:code, ds:data, es:data start:

mov ax, data mov ds, ax mov es, ax

mov si, offset Source mov di, offset Target mov cx, 256 rep movsb jmp $ code ends

end start

8086实验3 存储块清零

data segment

Block db 256 dup(55h) data ends

code segment

assume cs:code, ds:data

start proc near

mov ax, data mov ds, ax

mov bx, offset Block ; 起始地址 mov cx, 256 ; 清 256 字节 Again:

mov [bx], byte ptr 0 inc bx

Loop Again ; 记数减一

jmp $

code ends

end start

8086实验4 二进制到BCD码转换

自己定义存放结果的数据空间(段) 百位 十位 个位 参考程序和框图如下:

; 将 AX 拆为三个 BCD 码, 并存入 Result 开始的叁个单元 参考程序如下: data segment

Result db 3 dup(?) 定义长度为3个字节的Result 内容待定 data ends

code segment

assume cs:code, ds:data start:

mov ax, data

mov ds, ax ; 初始化DS

mov ax, 123 mov cl, 100 div cl

mov Result, al ; 除以 100, 得百位数

mov al, ah mov ah, 0 mov cl, 10 div cl

mov Result+1, al ; 余数除以 10, 得十位数 mov Result+2, ah ; 余数为个位数

jmp $

code ends end start

8086实验5 数据排序

一.实验目的

1 了解数据排序的常用算法,掌握冒泡算法。 2 进一步熟悉86编程环境和调试方法。

3 熟悉汇编程序设计,指令系统,伪指令的使用。 二.实验内容

给出一组随机数(10个,类型:字节),将此组数据数按从小到大(升序)排列(采用冒泡算法)。

三.实验仪器 微机、WAVE6000编程环境

注意:在数据段中自定义一组随机数,对自定义的数据排序。 如自定义: ARRAY DB 6,2,4,9,3,7,1,5,8,0 冒泡算法(两层循环,以下是内层循环开始……)。 6,2,9,4,3,7,1,5,8,0

前大后小交换位置如下: 2,6,9,4,3,7,1,5,8,0 前小后大不交换位置如下; 2,6,9,4,3,7,1,5,8,0 前大后小交换位置

2,6,4,9,3,7,1,5,8,0 ……

第一次内层循环结束顺序如下:最大的数9先冒出来

2,6,4,3,7,1,5,8,0,9 接着开始第二次内层循环……

参考程序:

Len equ 10 data segment

Array db 5,2,1,0,2,3,8,6,5,9 Change db 0 data ends code segment

assume cs:code, ds:data start proc near

mov ax, data mov ds, ax Sort:

mov bx, offset Array mov cx, Len-1 mov Change, 0 Goon:

mov al, byte ptr [bx] inc bx

cmp al, byte ptr [bx]

jng Next ; 前小后大, 不交换 mov Change, 1 ; 前大后小, 置交换标志 mov ah, [bx]

mov [bx] ,al ; 交换 mov [bx-1], ah Next:

loop Goon

cmp Change, 0 jne Sort jmp $ code ends end start


8086实验指导.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:欧洲货币一体化及其对亚洲货币合作的启示

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: