汇编语言程序设计实验篇(emu8086) 下载本文

内容发布更新时间 : 2024/12/24 10:47:23星期一 下面是文章的全部内容请认真阅读。

修改“emulator”对话框中文本框的内容,也可以观察其它段的内容,在图所示界面中,DS=0700H,若要察看该数据段中偏移地址为6000H位置处的内存单元内容,可以在文本框中输入0700:6000,显示结果如图所示,中间部分依次列出从该地址开始的所有字节的内容。

在“emulator”对话框的底部,单击

按钮,可以观察栈的内容;单击

钮,可以观察标志寄存器中标志位的内容。

在“emulator”对话框中,选择“view”菜单中的“memory”菜单项,也可以观察内存的情况。在“Random Access Memory”对话框中,可以修改文本框中的值可以确定所要观察的地址,该值由段基地址:段内偏移地址构成,如图所示,当前要观察的内存地址为(6000:0010)。在显示结果中,左边是逻辑地址,中间是从该地址的开始连续16个字节的内容,右边是每个字节对应的字符。在该对话框中,也可以直接修改存储器单元的值,如图所示,从60010H开始的连续4个字节的内容已经被修改为12H,34H,56H和78H。

1.2 基础实验 1.2.1 数据传送指令

1. 实验目的

1)熟悉8086指令系统的数据传送指令及8086的寻址方式。 2)利用emu8086调试工具调试汇编程序。

2. 实验设备

微型计算机、emu8086

3. 实验原理

通用数据传送指令包括:1)通用数据传送指令,如MOV,PUSH,POP,XCHG,CBW,CWD;2)目标地址传送指令,如LDS,LES;3)标志传送指令,如LAHF,SAHF,PUSHF,POPF;4)输入输出指令,如IN,OUT,LEA

寻址方式包括:1)立即寻址;2)直接寻址;3)寄存器寻址;4)寄存器间接寻值;5)寄存器相对寻址;6)基址-变址寻址;7)基址—变址—相对寻址;8)隐含寻址

4. 实验内容

(1)创建COM TEMPLATE程序,输入以下程序段,观察程序的执行情况,程序段如下:

MOV BL,08H ;BX=? MOV CL,BL ;CL=? MOV AX,03FFH ;AX=? MOV BX,AX ;BX=?

MOV DS:[6000H],BX ;DS:[6000H]=?(提示:在emulator对话框中间的文本框中输入段基地址:段内偏移地址,可以观察其它逻辑段相应存储单元的内容)

(2)创建COM TEMPLATE程序,用以下程序段将一组数据压入PUSH堆栈区,然后通过三种不同方式出栈。观察栈的变化情况(提示:在emulator对话框中,单击

按钮可

以察看栈中内容)以及出栈后数据的变化情况,并把结果填入表1-1中。程序段如下:

MOV AX,0102H MOV BX,0304H MOV CX,0506H MOV DX,0708H PUSH AX PUSH BX PUSH CX PUSH DX

第—种出栈方式的指令序列: POP DX POP CX POP BX POP AX

第二种出栈方式的指令序列(注:替换掉第—种出栈方式的指令序列): POP AX POP BX POP CX POP DX

第三种出栈方式的指令序列(注:替换掉第二种出栈方式的指令序列): POP CX POP DX POP AX POP BX

表1-1数据传送实验结果表格

寄存器的值 (AX)= (BX)= (CX)= 第一种出栈方式 第二种出栈方式 第三种出栈方式 (DX)= (3)创建COM TEMPLATE程序,分别输入下列指令,按要求设置各寄存器及内存单元的值(提示:在“emulator”对话框中,可以直接修改寄存器的值;选择“view”菜单中的“memory”菜单项可以设置内存单元的值),其中BX=0010H,SI=0001H,[60010H]=12H,[60011H]=34H,[60012H]=56H,[60013H]=78H,[60120H]=0ABH,[60121H]=0CDH,[60122H]=0EFH,观察指令执行后AX中的内容。 1)MOV AX,1200H 2)MOV AX,BX 3)MOV AX,[0120H] 4)MOV AX,[BX]

5)MOV AX,0110H[BX] 6)MOV AX,[BX][SI]

7)MOV AX,0110H[BX][SI]

(4)创建COM TEMPLATE程序,试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,将DS:6000H字节存储单元中的内容传送到DS:6020H单元中。

(5)设AX=1111H,BX=2222H,[DS:6010H]=3333H。试编写COM TEMPLATE程序,将AX的内容与BX的内容交换,然后再将BX的内容与DS:6010H单元的内容进行交换。 (6)若[DS:6000H]=0EEFFH,[ES:7000H]=0CCDDH,请编写COM TEMPLATE程序,将两个存储单元的内容交换。

5. 实验习题

指出下列指令的错误并加以改正,并在emu8086中验证。 1)MOV [BX],[SI] 2)MOV AH,BX 3)MOV AX,[SI][DI]

4)MOV BYTE PTR[BX],2000H 5)MOV CS,AX 6)MOV DS,2000H

6. 实验报告要求

1) 整理源程序段和运行结果。

2) 给出几种在emu8086中察看内存单元的方法。

1.2.2 算术逻辑运算指令

1. 实验目的

1)熟悉算术逻辑运算指令的功能。

2)了解标志寄存器中各标志位的意义以及指令执行对它的影响。