寻址方式与基本指令-微机原理实验报告

合集下载

微机原理及应用实验报告

微机原理及应用实验报告
2•深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21

微机原理与汇编语言实验报告

微机原理与汇编语言实验报告

微机原理与汇编语言实验报告学号:********班级:*****姓名:*****指导教师:*****一.实验目的1.通过上机实验进一步熟悉并掌握汇编语言的指令系统和寻址方式;2.熟悉汇编语言程序上机的流程,以及与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)3.学习汇编程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法4.能够独自编写,调试,并成功运行一个完整的程序。

二.实验内容与步骤1.掌握汇编语言程序上机过程首先,新建文本文档后将扩展名改为.ASM,这是汇编语言源程序的文件格式,以记事本形式打开后在其中键入所编写的程序。

第一次题目是在屏幕上显示一串字符串,在老师的指导下,编写的程序如下:data segmentnote db 'hello','$'data endscode segmentmain proc farassume cs:code,ds:data,es:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov es,axmov ah,09hlea dx,noteint 21hmain endpcode endsend start之后,要进行编译和运行。

源程序经过翻译程序成为机器能够识别的目标程序,目标程序再经过连接程序连接后转换成在机器上可执行的程序。

基本流程图如下:在编译的过程中,程序查出的主要是语法上的错误,如果有错,则不能通过汇编,要纠错后重新汇编直到无错为止。

最后,生成的.EXE文件即为可执行文件,从磁盘调入内存运行,得到运行结果。

上述程序的运行结果为在屏幕上显示出“hello”。

2.编程完成任意两个两位数的加法运算编程任务的基本要求为:从键盘输入任意两个两位数相加,将结果显示在屏幕上。

刚开始拿到题目后,头脑里是比较混乱的。

经过与同学的探讨之后,我们大概确定出要完成整个功能,需经过以下过程:将输入的ASCII码与十进制数值进行转换,并保存在寄存器中;通过调用程序将两个数相加,并将结果保存;将结果显示在屏幕上。

微机原理实验一报告

微机原理实验一报告

微机原理实验一1.DEBUG 的基本操作:(1)从WINDOWS 进入DOS 之后,输入命令启动DEBUG:C:>DEBUG 回车(2)输入R 命令,查看和记录CPU 各个寄存器的内容:-R 回车看到什么?AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0100 NV UP EI PL NZ NA PO NC 16D3:0100 0000 ADD [BX+SI],AL DS:0000=CD(3)输入 A 命令,汇编下面的字符“WINDOWS”显示程序(DEBUG 调试环境中,默认为十六进制,因此源程序中十六进制数后面不写H):-A 100 ;从偏移地址是0100H 处开始写指令MOV AH,2MOV DL, 57 ;57H 是“W”的ASCII 码INT 21 ;INT 21 是DOS 功能调用,AH=2 代表2 号功;能。

这3 句合起来的功能是:显示DL 中的字符MOV DL, 49INT 21MOV DL, 4EINT 21MOV DL, 44INT 21MOV DL, 4FINT 21MOV DL, 57INT 21MOV DL, 53INT 21INT 3 ;功能是产生一个断点,不要省略(4)输入U 命令反汇编上面的程序:-U 100问:这里100代表什么?反汇编从0100开始(5)输入G命令连续运行上面的程序,记录运行结果:-G=100AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0100 NV UP EI PL NZ NA PO NC 16D3:0100 B402 MOV AH,02(6)输入E命令把上面程序中的数据57,49,4E,44,4F,57,53依次分别改为57,45,4C,43,4F,4D,45:-E 103 回车(以下同)-E 107-E 10B-E 10F-E 113-E 117-E 11B(7)输入D命令查看程序机器码的存放情况:-D 100 11E ;看从100开始到11E的机器码(8)输入G命令再连续运行程序,并记录运行结果:-G=100WELCOMEAX=0245 BX=0000 CX=0000 DX=0045 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=011E NV UP EI PL NZ NA PO NC 16D3:011E CC INT 3(9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各命令的运行结果:-T=100 回车-G=100 106 回车-G=100 10A 回车-G=100 10E 回车-G=100 11E 回车T=100AX=0245 BX=0000 CX=0000 DX=0045 SP=FFEE BP=0000 SI=0000 DI=0000DS=16D3 ES=16D3 SS=16D3 CS=16D3 IP=0102 NV UP EI PL NZ NA PO NC 16D3:0102 B257 MOV DL,57-g=100 106W-g=100 10aWE-g=100 10eWEL-g=100 11eWELCOME2.一字节十六进制数转换为ASCII码(只考虑大写字母)用E命令在DS:1000单元中存放十六进制数5A,用A命令从CS:0100单元开始存放下面程序的机器码,并调试运行(DEBUG调试环境中,源程序中十六进制数后面不写H):CS:0100 8D360010 LEA SI,[1000] ;将EA=1000送入SI中0104 8D3E2010 LEA DI,[1020] ;将EA=1020送入DI中0108 8A04 MOV AL,[SI] ;(AL)←((SI))010A 240F MOV BL,AL ;将AL中的一个字送入BL010C 240F AND AL,0F ;(AL)←(AL)^(01H)010E E80E00 CALL 011F ;调用EA=011F中的指令0111 80E30 AND BL,F0 ;(BL)←(BL)^(F0H)0114 B90400 MOV CX,4 ;将立即数4送入CX中0117 D2EB SHR BL,CL ;将BL中的内容左移CL;中指出的位数,且每次移位最低位补0 0119 88D8 MOV AL,BL ;将BL中的一个字送入AL011B E80100 CALL 011F ;调用EA=011F中的指令011E F4 RET :返回指令011F 3C09 CMP AL,09 ;(AL)-09,根据结果设置标志位0121 7602 JBE 0125 ;执行EA=0125的指令0123 0407 ADD AL,07 ;(AL)←(AL)+07H0125 0430 ADD AL,30 ;(AL)←(AL)+30H0127 8805 MOV [DI],AL ;(AL)送入EA=(DI)的单元中0129 47 INC DI ;(DI)←(DI)+1012A C3 RET ;返回指令运行结果:1)写出执行上述程序的命令行-G=1002)程序执行后,[1020]=_____41_____,[1021]=___35______。

微机原理的实验报告

微机原理的实验报告

一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。

二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。

(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。

(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。

2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。

(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。

(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。

3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。

(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。

(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。

4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。

(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。

(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。

三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。

2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。

3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。

4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。

四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。

微机原理实验报告

微机原理实验报告

微机原理实验报告1.实验的目的是学习8086/8088指令系统中一些基本指令的用法以及程序的基本方法。

2.熟悉在PC上建立,组装,连接,调试和运行8086.8088汇编语言程序的全过程。

2,在实验中,四个数字a,B,C和D分别以单字节压缩BCD代码的形式存储在num存储器的四个单元中。

然后,计算(a + b)-(c + D)并以Y1单位放置,结果显示在屏幕上。

在调试中,不断更改a,B,C,D的内容并查看结果。

本文提供了几组数据:1. A = 09,B = 06,C = 04,d = 07 2. A = 38,B = 41,C = 29,d = 343. A = 70,B = 23,C = 42,d = 414. A = 63,B = 73,C = 62,d = 50 3.实验调试的过程1.使用DOS工具掩码和链接生成EXE文件2.使用调试工具编译断点调试程序。

1.用-U命令反汇编程序②设置断点1以检查a + B的结果是否正确。

结果存储在A1中23h,结果正确。

③设置断点2以检查C + D的结果是否正确。

如果将结果存储在Al中30h,则结果正确。

④运行程序后,使用-D命令检查最终结果是否正确。

数据段的第五个地址是计算结果,该结果正确。

⑤使用-E特别是在(a + b)-(c + D)中,如果前者小于后者,则结果可能不正确。

这时,我们应该判断借位标志是否为负。

如果为负,请使用(c + D)-(a + b)并在结果中输出一个负号。

3.成功调试并检查结果直接在DOS命令add.exe 下运行或在调试中使用-G命令运行程序,并查看程序结果。

4.实验程序和DSEG程序框图。

定义数据段num DB 13h,27h,11h,12h;定义A,B,C,D Y1 DB?DSEG结束;数据段结束sseg段标准堆栈;定义堆栈DB 20 dup(?)sseg结束cseg段假定CS:cseg,ds:DSEG,SS:SSEG开始:MOV AX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX MOV AL,[NUM];复制A至AL添加AL,[NUM + 1]; A + B DAA MOV CL,AL;保存AL MOV AL,[NUM + 2];复制C至AL 添加AL,[NUM + 3]; C + D DAA SUB CL,AL;(A + B)-(C + D)MOV AL,CL DAS MOV [NUM + 4],AL MOV BL,AL;保存AL和AL,0F0H; R SHIFT MOV CL,4 SHR AL,CL ADD AL,30H;获取ASCII MOV DL,AL MOV AH,02h int 21h mov Al,BL;恢复Al和Al,0Fh;取低4位,添加Al,30h mov DL,Al mov ah,02h int 21h mov ax,4c00h int 21h cseg结束起始端5。

微机原理综合实训报告

微机原理综合实训报告

通过本次微机原理综合实训,使学生掌握微型计算机的基本组成、工作原理以及常用接口技术,培养学生动手实践能力、分析问题和解决问题的能力。

具体目标如下:1. 熟悉微型计算机的硬件组成,了解各部件的功能和相互关系。

2. 掌握微机原理与接口技术的基本知识,如总线、中断、DMA等。

3. 学会使用常用接口芯片,如8255、8259、8253等。

4. 能够进行简单的微机原理设计与实现。

二、实训内容1. 微型计算机硬件组成实验(1)了解微型计算机的基本组成,包括中央处理器(CPU)、存储器、输入输出设备、总线等。

(2)学习CPU的内部结构,了解指令系统、寻址方式等。

(3)了解存储器的分类、容量、速度等参数,学习存储器扩展技术。

(4)学习输入输出设备的工作原理,掌握常用接口芯片的使用方法。

2. 微机原理与接口技术实验(1)学习总线、中断、DMA等基本概念,了解其工作原理。

(2)学习8255并行接口芯片的应用,实现LED显示、按键输入等功能。

(3)学习8259中断控制器芯片的应用,实现中断处理。

(4)学习8253定时/计数器芯片的应用,实现定时功能。

3. 系统设计与实现(1)根据实训要求,设计一个简单的微机系统。

(2)确定系统硬件组成,选择合适的接口芯片。

(3)编写系统软件,实现系统功能。

(4)进行系统调试,确保系统稳定运行。

1. 实验准备(1)了解实验目的、内容和方法。

(2)查阅相关资料,掌握实验所需知识和技能。

(3)准备实验仪器和设备,如示波器、逻辑分析仪等。

2. 实验操作(1)按照实验步骤进行操作,观察实验现象。

(2)记录实验数据,分析实验结果。

(3)针对实验过程中遇到的问题,查阅资料、请教老师,解决问题。

3. 系统设计与实现(1)根据实训要求,确定系统设计方案。

(2)进行硬件选型,设计电路图。

(3)编写系统软件,实现系统功能。

(4)进行系统调试,确保系统稳定运行。

四、实训成果1. 完成微型计算机硬件组成实验,掌握微型计算机的基本组成和工作原理。

微机原理实验报告 可编程并行IO接口8255

微机原理实验报告 可编程并行IO接口8255

《微机原理及应用技术》课程实验报告实验五可编程并行I/O接口8255【预习内容】1.怎样选中可编程I/O接口?怎样实现I/O端口的寻址?8255的CS/接地址译码/CS0,则命令字地址为8003H,PA口地址为8000H,PB口地址为8001H,PC口地址为8002H。

通过地址/数据总线,按照指定地址进行读写操作直接选中8255。

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片。

CPU与外设交换的数据是以字节为单位进行的。

因此一个外设的数据端口含有8位。

而状态口和命令口可以只包含一位或几位信息,所以不同外设的状态口允许共用一个端口,命令口也可共用。

数据信息、状态信息和控制信息的含义各不相同,按理这些信息应分别传送。

但在微型计算机系统中,CPU通过接口和外设交换数据时,只有输入(IN)和输出(OUT)两种指令,所以只能把状态信息和命令信息也都当作数据信息来传送,且将状态信息作为输入数据,控制信息作为输出数据,于是三种信息都可以通过数据总线传送了。

但要注意,这三种信息被送入三种不同端口的寄存器,因而能实施不同的功能。

CPU对外设的访问实质上是对I/O接口电路中相应的端口进行访问,也需要由译码电路来形成I/O端口地址。

I/O端口的编址方式有两种·存储器映象寻址方式·I/O指令寻址方式2.8255A接口芯片内含几个I/O端口?它们的名称分别是?这些I/O口地址有何特点?三个数据端口,三种工作方式A口可工作于方式0、方式1和方式2中的任一种B口可工作于方式0和方式1,但不能工作于方式2C口只能工作于方式08位数据端口:A口、B口、C口A口:PA7~PA0B口:PB7~PB0C口:PC7~PC0连接外部设备A口与B口为一个8位的输入口或输出口C口单独作为一个8位的输入口或输出口配合A口和B口使用,作为控制信号和状态信号3.8255A有几个控制字?怎样设置?它有两个控制字,一个是方式选择控制字,一个是对C口进行置位或复位控制字。

微机原理实验报告

微机原理实验报告

实验名称:微机原理与接口技术实验实验日期:2023年11月X日实验地点:微机原理实验室实验仪器:微机原理实验箱、计算机、仿真软件等实验人员:XXX、XXX、XXX一、实验目的1. 理解微机原理的基本概念和组成结构。

2. 掌握计算机的基本工作原理和指令系统。

3. 学习计算机接口技术的基本原理和方法。

4. 通过实验,提高动手能力和实际操作技能。

二、实验内容1. 计算机组成结构实验:- 学习计算机的硬件组成,包括中央处理器、存储器、输入输出设备等。

- 了解计算机的工作原理,包括数据的输入、处理、输出过程。

- 使用实验箱进行计算机组成结构实验,验证计算机的基本工作原理。

2. 指令系统实验:- 学习汇编语言的基本语法和指令系统。

- 掌握指令的格式、操作数和寻址方式。

- 使用汇编语言编写程序,实现简单的计算、数据传输和逻辑运算等功能。

3. 接口技术实验:- 学习计算机接口的基本原理和方法。

- 了解常用的接口电路和芯片。

- 使用接口技术实现数据传输、信号处理等功能。

- 学习仿真软件的使用方法,包括程序编写、调试和运行等。

- 使用仿真软件模拟计算机的工作过程,验证程序的正确性。

三、实验步骤1. 计算机组成结构实验:- 搭建实验箱,连接计算机硬件设备。

- 编写程序,实现简单的计算、数据传输和逻辑运算等功能。

- 观察实验结果,验证计算机的基本工作原理。

2. 指令系统实验:- 学习汇编语言的基本语法和指令系统。

- 编写汇编语言程序,实现简单的计算、数据传输和逻辑运算等功能。

- 使用汇编语言编写程序,实现更复杂的计算和数据处理功能。

3. 接口技术实验:- 学习计算机接口的基本原理和方法。

- 使用接口技术实现数据传输、信号处理等功能。

- 编写程序,实现接口功能,并验证其正确性。

4. 仿真软件实验:- 使用仿真软件编写程序,实现计算机的基本工作过程。

- 使用仿真软件调试程序,验证程序的正确性。

- 使用仿真软件模拟接口电路的工作过程,验证接口功能的正确性。

微机原理实验指导书

微机原理实验指导书

实验一数据传送实验目的:1.熟悉8086指令系统的数据传送指令及8086的寻址方式。

2.利用TurboDebugger调试工具来调试汇编语言程序。

实验任务:1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。

练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。

压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈程序段请自行编写(用不同的出栈顺序)。

3.指出下列指令的错误并加以改正,上机验证之。

(1)MOV[BX],[SI](2)MOVAH,BX(3)MOVAX,[SI][DI](4)MOVBYTEPTR[BX],2000H(5)MOVCS,AX(6)MOVDS,2000H4.设置各寄存器及存储单元的内容如下:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。

(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[0120H](4)MOVAX,[BX](5)MOVAX,0110H[BX](6)MOVAX,[BX][SI](7)MOVAX,0110H[BX][SI]5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。

试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。

8086实验

8086实验

实验一、寻址方式与基本指令实验一、实验目的1.熟悉8086寻址方式及基本指令功能,进一步理解和巩固课学习内容。

2.掌握汇编语言程序设计上机过程和汇编语言源程序结构。

3.熟悉Microsoft的DEBUG调试工具的使用方法。

二、实验预习要求1.认真阅读教科书第三章,了解并熟悉汇编语言程序的上机步骤及DEBUG调试工具的使用方法。

2.复习8086操作数寻址方式及基本指令功能(数据传送、算术运算和逻辑运算等)。

3.了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题外),以便在实验时进行验证。

三、实验内容1.读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

1)程序装入后,代码段寄存器CS的内容为H,代码段第一条可执行指令“MOV AX,DATA”对应的机器代码为H,它是一个字节指令,注意观察执行该指令时IP的变化情况,该指令源操作数DATA的寻址方式是,其值为。

2)执行完“MOV DS,DATA”指令后,数据段寄存器DS的内容为H,源程序在数据段中定义的数据库82H、68H和88H被装入的存储单元的物理地址分别为H,H和H。

3)程序中第一条“ADD AL,[BX]”指令对应的机器代码H,它是一个字节指令,注意观察执行该指令时IP的变化情况,该指令中源操作数的寻址方式为,该操作数所在存储单元的逻辑地址(DS):(BX)为,物理地址为H;执行完该指令后(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数?4)执行完第二条“ADD AL,[BX]”指令后,(AL)= H,CF= ,OF= ,ZF= ,SF= ,AF= ,PF= ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?5)指令“MOV SUM,AL”中,目的操作数的寻址方式为,该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为H。

微机原理实习报告(带完全汇编源码)

微机原理实习报告(带完全汇编源码)

目录一.实习目的 .................................................. 错误!未定义书签。

二、实习内容及要求...................................... 错误!未定义书签。

三、方案和工作原理说明.............................. 错误!未定义书签。

四、程序流程图 .............................................. 错误!未定义书签。

五、程序源代码及注释.................................. 错误!未定义书签。

六、电路的连接 .............................................. 错误!未定义书签。

七、调试中出现的问题、原因及排除方法.. 错误!未定义书签。

一.实习目的本课程的课程设计是自动化专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。

本课程设计的目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法。

二.实习内容及要求1.实习内容简易电子琴原理:(1) 蜂鸣器输入不同频率的方波,会发出不同的声音;(2) 通过按键,由单片机控制产生不同频率的方波,从而发出不同的声音。

(3) 通过8255的PA口,使G6区的1~7号键由低到高发出1-7的音阶。

2.设计要求从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:1)掌握汇编语言程序设计的基本方法。

2)进一步理解各种接口电路的应用。

例如8255并行接口。

3)掌握利用PC机扬声器发出不同频率声音的方法。

4)理解12864模块的应用。

(此为创新添加部分)三、方案和工作原理说明1.方案基于PC计算机的时钟晶振为1.MHz,利用电脑里面的蜂鸣器发出声音。

微机原理实验

微机原理实验

实验一、DEBUG 调试软件的使用一、实验目的1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

2.了解数据在存储器中的存取方法以及堆栈中数据的压入与弹出。

3.掌握各种寻址方式以及简单指令的执行过程。

4.掌握变量和标号的处理,数值的默认进位制。

二、实验内容1.设堆栈指针SP=2000H,AX=3000H,BX=5000H;利用堆栈实现将AX,BX的内容交换。

用DEBUG 进行汇编和调试。

1.1 DEBUG的主要命令DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

一.进入DEBUG状态二.DEBUG的命令1.汇编命令A该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。

注意:汇编程序默认的数据是十进制,而DEBUG默认的数据是16进制,即DEBUG中没有二进制、八进制及十进制,只有16进制。

汇编命令格式为:-A? [段地址]:[偏移地址] 说明:[ ]表示可选项,若未指定地址,则默认地址为CS:0100H。

例:用汇编语言编写一个简单的加法程序。

输入的汇编指令有语法错误的,将提示“error”,再重新输入正确指令即可。

若程序输入完毕,发现某条指令输入错误,比如第三条语句输入有误,就从该指令的偏移地址开始汇编(即-A 106)。

如果新输入的指令所占用的内存空间跟旧指令一样,修改完回车退出汇编即可;如果新输入的指令所占用的内存空间比旧指令少,可在多余的内存空间输入“NOP(空操作,占一字节)”指令;如果新输入的指令所占用的内存空间比旧指令多,就必须将后面的所有指令重新输入。

思考:汇编程序时,偏移地址为何不是连续的,它是如何变化的?(参考第6小点)2.命名命令N读(L)/写(W)程序前,必须先命名,即该命令结合读(L)/写(W)命令使用。

(参阅4、5)例:-N EX1;给程序文件命名为EX1。

3.检查和修改寄存器命令R4.写盘命令WW命令没有任何参数时,与命令N配合使用进行写操作,使用W命令前在BX:CX中应写入文件的字节数。

微机原理实验报告

微机原理实验报告

微机原理实验报告姓名:学号:班级:实验日期:年月日批阅老师:实验名称:拆字、拼字程序一、实验预习内容1、8086/8088有14个16位寄存器,按其用途可分为8个寄存器、2个寄存器和4个寄存器。

2、通用寄存器分别是。

代码段寄存器是,数据段寄存器是,堆栈段寄存器是。

3、在数据寄存器中,被称为累加器的用于算术运算外,还用于输入/输出等操作。

被称为基址寄存器的它可作为存储器指针来使用。

被称为计数寄存器的在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用来指明移位的位数。

而数据寄存器在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

4、堆栈指针寄存器与SS配合使用,可指向目前的堆栈位置;基址指针寄存器可用作SS的一个相对基址位置;源变址寄存器可用来存放相对于DS段之源变址指针;目的变址寄存器可用来存放相对于ES 段之目的变址指针。

指令指针寄存器用来存放代码段中的偏移地址。

5、在8088指令的寻址方式中,下列各指令中属于立即寻址的是,属于寄存器寻址的是,属于直接寻址的是,属于寄存器间接寻址的是,属于基址寻址的是,属于基址加变址寻址的是。

A、MOV AX,2000HB、MOV AX,[2000H]C、MOV AX,CXD、MOV AX,[DI]E、MOV AX,[BX][SI]F、MOV AX,[BP]6、在DEBUG下,反汇编命令是,汇编命令是,显示显示内存单元内容的命令是,修改内存单元内容的命令,检查和修改寄存器内容的命令是,逐步追踪执行命令是,连续执行程序命令是,退出命令是。

二、实验内容与过程1、设DS为当前段地址,BX=0300H,SI=0002H;请用DEBUG 的命令在存储器偏移地址300H~304H单元中连续按顺序装入0AH,0BH,0CH,0DH,0EH。

在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么,并指出这条指令是什么寻址方式。

8086指令操作数的寻址方式实验总结

8086指令操作数的寻址方式实验总结

8086指令操作数的寻址方式实验总结在计算机体系结构的学习中,8086指令操作数的寻址方式是一个非常重要的概念。

通过对这一概念的深入了解和实验操作,我们可以更好地理解计算机程序的执行过程,深化对计算机底层原理的理解。

在本文中,我将结合理论知识和实验结果,对8086指令操作数的寻址方式进行全面评估和总结。

1. 立即寻址立即寻址是一种直接将操作数的值嵌入指令中的寻址方式。

在8086指令集中,我们可以使用MOV指令将一个立即数传送到目的操作数中。

MOV AX, 1234h指令将立即数1234h传送到寄存器AX中。

通过实验操作,我发现立即寻址方式适用于需要直接传送常数值的情况,能够提高程序执行的效率。

2. 寄存器寻址寄存器寻址是一种通过寄存器来寻址操作数的方式。

8086微处理器具有通用寄存器AX、BX、CX、DX等,可以直接操作这些寄存器中的数据。

MOV AX, BX指令将寄存器BX中的数据传送到寄存器AX中。

在实验过程中,我发现寄存器寻址方式是一种高效的操作数寻址方式,能够提高程序的执行速度。

3. 直接寻址直接寻址是一种通过内存位置区域来寻址操作数的方式。

在8086指令集中,我们可以使用MOV指令将内存中的数据传送到寄存器中,或将寄存器中的数据传送到内存中。

MOV AX, [1234h]指令将存储在内存位置区域1234h处的数据传送到寄存器AX中。

实验结果表明,直接寻址方式可以灵活地对内存中的数据进行操作,适用于大规模数据的传送和处理。

4. 寄存器间接寻址寄存器间接寻址是一种通过寄存器中存储的位置区域来寻址操作数的方式。

在8086指令集中,我们可以使用指令将寄存器中存储的内存位置区域作为操作数进行操作。

MOV BX, [SI]指令将寄存器SI中存储的内存位置区域处的数据传送到寄存器BX中。

在实验中,我发现寄存器间接寻址方式适用于需要对内存中多个数据进行操作的情况,能够提高程序的效率和灵活性。

5. 立即偏移寻址立即偏移寻址是一种通过基址寄存器和偏移量来寻址操作数的方式。

微机原理寻址方式实验总结

微机原理寻址方式实验总结

微机原理寻址方式实验总结嘿,朋友们!咱来聊聊微机原理的寻址方式实验。

这寻址方式啊,就像是在一个大宝藏库里找宝贝。

你得知道怎么找才能最快最准地拿到你想要的那个宝贝。

直接寻址,这就好比你直接知道宝贝放在哪个柜子的哪个格子里,你一伸手就能拿到。

比如说,地址就在指令里明明白白地写着,多干脆!
寄存器寻址呢,就好像宝贝在你身边的几个小箱子里,你不用到处跑,打开身边的小箱子就行。

寄存器里存着数据或者地址,直接用,方便得很!
间接寻址就有点绕啦。

这就像是有个中间人知道宝贝在哪,你得通过他才能找到。

比如通过寄存器间接找到地址,再去拿宝贝。

基址加变址寻址,这就像是有个基础的大柜子,然后再根据一些变化的因素去找到具体的小格子。

是不是有点复杂?但搞明白了,那可就厉害了!
相对寻址呢,就好比你知道宝贝在离你现在位置不远处,按照相对的距离就能找到。

在做这个实验的时候,我可是费了不少心思。

一开始,那真叫一个晕头转向,感觉这些寻址方式就像一群调皮的小精灵,到处乱跑,我怎么都抓不住。

可咱不能认输啊!我就一个一个慢慢琢磨,反复试验。

做着做着,突然就有了那种“柳暗花明又一村”的感觉。

你说,如果连这寻址方式都搞不定,以后怎么去驾驭更复杂的微机世界?就像盖房子,基础不打牢,能盖出结实的大楼吗?
所以啊,朋友们,好好掌握这些寻址方式,这可是通往微机原理深处的关键钥匙。

只有把这钥匙握在手里,咱们才能在微机的世界里畅行无阻,发现更多的精彩!。

寻址方式与基本指令-微机原理实验报告

寻址方式与基本指令-微机原理实验报告

西安郵電大學微型计算机原理课内实验报告书院系名称:计算机学院实验题目:寻址方式与基本指令学生姓名:专业名称:软件工程班级:软件1003班学号:指导教师:葛茂1 实验目的1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。

2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。

3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法2 实验预习要求1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。

2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。

3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。

4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。

3 实验内容1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

(1)程序装入后,代码段寄存器CS的内容为0893H,代码段第一条可执行指令MOV AX, DATA对应的机器代码为B80E08H,它是一个3字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是立即数寻址,其值为1425。

(2)执行完MOV DS, DATA指令后,数据段寄存器DS的内容为8629H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为86290H、86291H和86292H。

(3)程序中第一条ADD AL, [BX] 指令对应的机器代码为0207H,它是一个2字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为寄存器间接寻址,该操作数所在存储单元的逻辑地址(DS): (BX)为8629:0001,其物理地址为86291H;执行完该指令后(AL)=EAH,CF=0,OF=0,ZF=0,SF=1,AF=0,PF=0;若两操作数为无符号数,计算结果是否正确是?若两操作数为带符号数,计算结果是否正确错误?(4)执行完第二条“ADD AL, [BX]”指令后(AL)=72H,CF=1,OF=1,ZF=0,SF=0,AF=1,PF=1;若两操作数为无符号数,计算结果是否正确错误?若两操作数为带符号数,计算结果是否正确错误?(5)指令MOV SUM, AL中目的操作数的寻址方式为寄存器寻址。

微机原理实验报告

微机原理实验报告

实验一显示程序实验一、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS功能调用使用方法;3. 熟悉Tddebug调试环境和Turbo Debugger的使用。

二、实验所用设备1. PC微机一台。

三、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。

本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

实验中可使用DOS功能调用(INT21H)。

(1) 显示单个字符输出入口:AH=02H调用参数:DL=输出字符(2) 显示字符串入口:AH=09H调用参数:DS:DX=串地址,’$’为结束字符(3) 键盘输入并回显入口:AH=01H返回参数:AL=输出字符(4) 返回DOS系统入口:AH=4CH调用参数:AL=返回码四、实验步骤1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3.使用Rmrun菜单中的Run,运行程序,观察运行结果;4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5.更改数据区中的数据,考察程序的正确性。

图1-1 显示程序实验流程图五、参考程序清单六、实验报告内容及要求写出程序调试过程及运行情况。

1.将参考程序写入轻松汇编编辑框。

2.点击保存,然后编译,结果框显示编译成功。

3.点击生成,显示链接成功。

4.点击运行,显示如图:实验二数据传送实验一、实验目的1. 熟悉Tddebug调试环境和Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。

二、实验所用设备1. PC微机一台。

三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。

计算机组成原理实验报告_2

计算机组成原理实验报告_2

计算机组成原理实验报告——微程序控制器实验1.一. 实验目的:2.能看懂教学计算机(TH-union)已经设计好并正常运行的数条基本指令的功能、格式及执行流程。

并可以自己设计几条指令, 并理解其功能, 格式及执行流程, 在教学计算机上实现。

3.深入理解计算机微程序控制器的功能与组成原理4.深入学习计算机各类典型指令的执行流程5.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念6.学习微程序控制器的设计过程和相关技术二. 实验原理:微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。

其工作原理分为:1.将程序和数据通过输入设备送入存储器;2.启动运行后从存储器中取出程序指令送到控制器去识别, 分析该指令要求什么事;3.控制器根据指令的含义发出相应的命令(如加法、减法), 将存储单元中存放的操作数据取出送往运算器进行运算, 再把运算结果送回存储器指定的单元中;4、运算任务完成后, 就可以根据指令将结果通过输出设备输出三. 微指令格式:1)微地址形成逻辑TH—UNION 教学机利用器件形成下一条微指令在控制器存储器的地址.下地址的形成由下地址字段及控制字段中的CI3—SCC控制.当为顺序执行时,下地址字段不起作用.下地址为当前微指令地址加1;当为转移指令(CI3—0=0011)时,由控制信号SCC提供转移条件,由下地址字段提供转移地址.2)控制字段控制字段用以向各部件发送控制信号,使各部件能协调工作。

控制字段中各控制信号有如下几类:①对运算器部件为了完成数据运算和传送功能, 微指令向其提供了24位的控制信号, 包括:4位的A、B口地址, 用于选择读写的通用积存器3组3位的控制码I8-I6、I5-I3、I2-I6, 用于选择结果处置方案、运算功能、数据来源。

3组共7位控制信号控制配合的两片GAL20V83位SST, 用于控制记忆的状态标志位2位SCI, 用于控制产生运算器低位的进位输入信号2位SSH, 用于控制产生运算器最高, 最地位(和积存器)移位输入信号②对内存储器I/O和接口部件, 控制器主要向它们提供读写操作用到的全部控制信号, 共3位, 即MRW③对CPU内部总线数据来源的控制, 主要通过3位编码标记为DCD, 来选择把哪一组数据发送到内部总线(IB)上。

微机原理实验报告

微机原理实验报告

微机原理实验报告
一、实验目的
本次实验的主要目的是了解微机原理、学习微机的基础知识、技能和操作方法,还有熟悉微机实验室的使用方法。

二、实验过程
在实验室中,我们首先进行了掌握微处理器的基本指令集和编程技巧的实验。

通过对微处理器的学习,我们了解到了微处理器的组成结构和工作原理,同时也了解了微处理器的基础指令集,包括数据的传送、算术、逻辑、分支、循环指令等等。

接着我们进行了CPU总线实验。

通过对CPU总线的学习,我们了解了CPU读写内部和外部存储器的方法和原理。

同时,我们学习了编写程序来控制CPU读写存储器等。

最后,我们进行了8255并行接口控制实验。

通过学习并实践8255并行接口控制实验,我们了解了接口及其编程。

三、实验结果
在实验中,我们成功地掌握了微处理器的基本指令集和编程技巧,了解了微处理器的组成结构和工作原理,同时掌握了CPU总
线实验和8255并行接口控制实验。

在实验中不仅增长了专业知识,而且也培养了我们的实验能力,并进一步增强了我们的实践能力。

四、实验心得
通过这次实验,我们意识到,要想成为一名优秀的计算机专业
人才,必须首先打牢微机原理的基础,通过大量的实践和实验,
来应用理论知识,深入了解计算机底层的数据处理方式以及处理
器和存储器的工作原理。

只有这样才能够在日后工作中运用自如,并且在以后的学习和研究中更具备竞争力。

在以后的学习中,我将持续学习和实践,不断探索和发现,提
升自身的能力,为未来的发展做好充分的准备。

微机原理寻址方式试实验报告

微机原理寻址方式试实验报告

微机原理寻址方式试实验报告微机原理寻址方式试实验报告————————————————————————————————作者:————————————————————————————————日期:寻址方式练习实验报告一、实验目的1. 熟练掌握8086/8088的各种寻址方式及应用。

2. 掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础。

二、实验仪器586微机1台三、实验内容及程序1.关于数据的寻址方式练习8086/8088 提供多种方式实现操作数寻址,大体可分为7种:a. 立即寻址b. 寄存器寻址c. 直接寻址d. 寄存器间接寻址e. 寄存器相对寻址f. 基址变址寻址g. 基址变址且相对寻址2.实验程序STACK SEGMENT STACKDB 0B0H, 0B1H, 0B2H, 0B3H, 0B4H, 0B5H, 0B6H, 0B7HDB 0B8H, 0B9HDB 0BAH, 0BBH, 0BCH, 0BDH, 0BEH, 0BFHDB 10H DUP(00)STACK ENDSDATA1 SEGMENTDB 0A0H, 0A1H, 0A2H, 0A3HTABLE DW 0A5A4HDB 0A6H, 0A7H, 0A8H, 0A9H, 0AAH, 0ABHDB 0ACH, 0ADH, 0AEH, 0AFHDATA1 ENDSDATA2 SEGMENTDB 0C0H, 0C1H, 0C2H, 0C3H, 0C4H, 0C5H, 0C6H, 0C7HDB 0C8H ,0C9H, 0CAH, 0CBH, 0CCH, 0CDH, 0CEH, 0CFHDATA2 ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA1, ES:DATA2, SS:STACK START:MOV AX, DATA1MOV DS, AXMOV AX, DATA2MOV ES, AXMOV BX, 0004HMOV CX, 0005HMOV BP, 0003HMOV SI, 0002HMOV DI, 0001HMOV AX, CX ;以下指令按后表要求完成MOV AX, 500HMOV AX, TABLEMOV AX, ES:[BX]MOV AX, [BX+05H]MOV AX, SS:[BX]+03HMOV AX, TABLE [BX]MOV AX, 07H [BX]MOV AX, [BP]MOV AX, TABLE [BP]MOV AX, 08H [BP]MOV AX, [BP+06H]MOV AX, DS:[BP+03H]MOV AX, [BP]+05HMOV AX, ES: [SI+03H]MOV AX, [DI+06H]MOV AX, [DI]+05HMOV AX, TABLE [SI]MOV AX, [SI]MOV AX, TABLE [DI]MOV AX, [SI]+05HMOV AX, [BX] [DI+01H]MOV AX, [BX] [SI]+03HMOV AX, TABLE [BX] [SI]MOV AX, ES:[BX] [DI]MOV AX, [BP] [DI+02H]MOV AX, TABLE [BP] [DI]MOV AX, ES:[BP] [SI]MOV AX, [BP] [SI+05H]MOV AX, 03H [BP] [DI]MOV AX, [BP] [SI]MOV AX, [BP+02H] [DI+03H]MOV AX, TABLE [BP+02H] [DI+03H]MOV AH, 4CHINT 21HCODE ENDSEND START四、实验数据结果指令SRC寻址方式SRC的地址AX推算值AX实际值MOV AX,寄存器寻址0005 0005 CXMOV AX,立即寻址0500 0500 500HMOV AX,直接寻址076C:0004 A5A4 C5C4 TABLEMOV AX,寄存器间接寻址076D:0004 C5C4 C5C4 ES:[BX] MOV AX,寄存器相对寻址076C:0009 AAA9 AAA9 [BX+05H] MOV AX,寄存器相对寻址076A:0007 B8B7 B8B7 SS:[BX]+03H MOV AX,寄存器相对寻址076C:0008 A9A8 A9A8 TABLE [BX] MOV AX,寄存器相对寻址076C:000B ACAB ACAB 07H [BX] MOV AX,寄存器间接寻址076A:0003 B4B3 B4B3 [BP]MOV AX,寄存器相对寻址076C:0007 A8A7 A8A7 TABLE [BP] MOV AX,08H [BP]寄存器相对寻址076A:000B BCBB BCBB MOV AX, [BP+06H]寄存器相对寻址076A:0009 BAB9 BAB9 MOV AX, DS:[BP+03H]寄存器相对寻址076C:0006 A7A6 A7A6 MOV AX, [BP]+05H寄存器相对寻址076A:0008 B9B8 B9B8 MOV AX, ES: [SI+03H]寄存器相对寻址076D:0005 C6C5 C6C5 MOV AX,[DI+06H]寄存器相对寻址076C:0007 A8A7 A8A7 MOV AX, [DI]+05H寄存器相对寻址076C:0006 A7A6 A7A6 MOV AX, TABLE [SI]寄存器相对寻址076C:0006 A7A6 A7A6 MOV AX, [SI]寄存器间接寻址076C:0002 A3A2 A3A2 MOV AX, TABLE [DI]寄存器相对寻址076C:0005 A6A5 A6A5 MOV AX, [SI]+05H寄存器相对寻址076C:0007 A8A7 A8A7MOV AX, [BX] [DI+01H] 基址变址且相对寻址076C:0006 A7A6 A7A6MOV AX, [BX] [SI]+03H 基址变址且相对寻址076C:0009 AAA9 AAA9MOV AX, TABLE [BX] [SI] 基址变址且相对寻址076C:000A ABAA ABAAMOV AX,ES:[BX] [DI]基址变址寻址076D:0005 C6C5 C6C5MOV AX, [BP] [DI+02H] 基址变址且相对寻址076A:0006 B7B6 B7B6MOV AX, TABLE [BP] [DI] 基址变址且相对寻址076C:0008 A9A8 A9A8MOV AX,ES:[BP] [SI]基址变址寻址076D:0005 C6C5 C6C5MOV AX, [BP] [SI+05H] 基址变址且相对寻址076A:000A BBBA BBBAMOV AX, 基址变址且相对076A:0007 B8B7 B8B703H [BP] [DI] 寻址MOV AX,[BP] [SI]基址变址寻址076A:0005 B6B5 B6B5MOV AX, [BP+02H][DI+03H] 基址变址且相对寻址076A:0009 BAB9 BAB9MOV AX, TABLE[BP+02H][DI+03H] 基址变址且相对寻址076C:000D AEAD AEAD四、问题讨论在上表中,分析AX推算值与实际值有何不同?找出错误原因,小结出各种寻址方式所用的段寄存器的规律来?答:理论上推算值与实际值相同;基址变址寻址方式用ES寄存器;基址变址且相对寻址方式用寄存器;寄存器间接寻址方式用DS、DS、SS寄存器;寄存器相对寻址用DS、DS、SS寄存器;直接寻址方式用DS寄存器;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安郵電大學
微型计算机原理
课内实验报告书
院系名称:计算机学院
实验题目:寻址方式与基本指令学生姓名:
专业名称:软件工程
班级:软件1003班
学号:
指导教师:葛茂
1 实验目的
1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。

2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。

3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法
2 实验预习要求
1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。

2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。

3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。

4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。

3 实验内容
1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ
文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

(1)程序装入后,代码段寄存器CS的内容为0893H,代码段第一条可执行指令MOV AX, DATA对应的机器代码为B80E08H,它是一个3字节指令,
注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址
方式是立即数寻址,其值为1425。

(2)执行完MOV DS, DATA指令后,数据段寄存器DS的内容为8629H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地
址分别为86290H、86291H和86292H。

(3)程序中第一条ADD AL, [BX] 指令对应的机器代码为0207H,它是一个2字节指令,注意观察执行该指令时IP值的变化情况;该指令中源
操作数的寻址方式为寄存器间接寻址,该操作数所在存储单元的逻辑地
址(DS): (BX)为8629:0001,其物理地址为86291H;执行完该指令后
(AL)=EAH,CF=0,OF=0,ZF=0,SF=1,AF=0,PF=0;若两操作数为无符
号数,计算结果是否正确是?若两操作数为带符号数,计算结果是否正
确错误?
(4)执行完第二条“ADD AL, [BX]”指令后(AL)=72H,CF=1,OF=1,ZF=0,SF=0,AF=1,PF=1;若两操作数为无符号数,计算结果是否正确
错误?若两操作数为带符号数,计算结果是否正确错误?
(5)指令MOV SUM, AL中目的操作数的寻址方式为寄存器寻址。

该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为72H。

DATA SEGMENT
NUM DB 82H, 68H, 88H
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV BX, OFFSET NUM
MOV AL, [BX]
INC BX
ADD AL, [BX]
INC BX
ADD AL, [BX]
MOV SUM, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
2、读懂下列源程序;编辑、汇编、连接生成EX12.ASM、EX12.OBJ、EX12.LST、
EX12.EXE文件;使用DEBUG单步执行EX12.EXE文件,并回答以下问题。

(1)代码段的前三条指令MOV AX, STACK、MOV SS, AX和MOV SP, LENGTH STL的功能为堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元
的逻辑地址(SS): (SP)为8629:0100;执行PUSH AX指令后堆栈指针寄
存器(SP)=00FEH,此时,(SS): (SP+1)和(SS): (SP)单元的值为5B0A:
CEDC和083A:CFDE H;执行完PUSH BX后(SP)=CFD8H,此时,(SS): (SP+1)
和(SS): (SP)单元的值为083A:CED8和C83A:CFDAH;执行完POP BX
后(SP)=CFCCH;此时(AX)=0000H,(BX)=CD44H。

请读者通过对堆栈操作指
令执行情况的观察,进一步掌握进、出栈操作过程。

(2)执行ADD AX, BX指令后(AX)=0000H,CF=NC,OF=OU,ZF=NE,SF=NG,AF=NA,PF=PO(注意考虑PF值与计算结果高8位有无关系);若两操作数
为无符号数,计算结果是否正确正确?若两操作数为带符号数,计算结果
是否正确正确?
(3)执行AND AX, BX指令后(AX)=4802H,CF=0,OF=0,ZF=0,SF=0,AF=0,PF=0。

STACK SEGMENT stack
STL DW 100H DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START: MOV AX, STACK
MOV SS, AX
MOV SP, LENGTH STL
;表达式“LENGTH STL”的功能为计算STL中定义的变量的个数,
;汇编后其值为100H ,详见教材5.2.2
MOV AX, 0101101100001010B
MOV BX, 0100110010100011B
PUSH AX
PUSH BX
ADD AX, BX
POP AX
POP BX
AND AX, BX
MOV AH,4CH
INT 21H
CODE ENDS
END START
3、指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错
信息,改正后再上机验证。

(1) MOV BP, BL 正确
(2) MOV [BX],[BP] 错误,两个操作数不能同时为寄存器操作数
(3) MOV [BX],20H 错误,目的操作数类型不明确
(4) INC [SI] 错误,目的操作数类型不明确
(5) ADD AX,[SI+DI] 错误,存储器寻址中有效地址不能由两个变
址寄存器组成
(6) SHL AX,3 错误,移位次数大于1时应用CL寄存器
(7) PUSH 2000H 错误,堆栈指令的操作数不能是立即数
(8) POP AL 错误,堆栈指令的操作数只能是字操作数
(9) MOV CS,AX 错误,操作数类型不一致
(10) MOV DS,1000H 错误,源操作数是立即数时,目的操作数不
能是段寄存器
4 实验收获
这科和以前学的感觉完全不同,汇编语言让人很难懂,不过通过自己编写,已经有些懂了。

相关文档
最新文档