8086实验讲义
微机原理实验---Emu8086仿真软件的使用实验

EXE模板:适合完整程序的编写。 BIN模板:一般不用,因为不能 正确解释伪指令。
BOOT模板:编写程序,数据段 的段地址为07C0H。
选择COM模板, 软件出现源代码编辑器的界面, 如图所示:
(2)
存器的内容:
MOV AX,1000H ; AX=?
MOV BX,2000H ;BX=?
MOV CX,3000H ;CX=?
MOV DX, AX ;AX=? , DX=?
MOV AX, CX ;CX=?, AX =?
MOV CX, BX ;BX =?, CX =?
MOV BX, DX ;DX=?, BX=?
HLT
思考:该程序段实现什么功能?(3) 记录每条指来自执行后相关寄存器、存储器的内容:
MOV AX, 0B800H MOV DS, AX ; DS AX MOV CX, 5F41H MOV BX, 15EH MOV [BX], CX ; 将 CX的值传送到 BX 指出的内存
单元B800H:015EH中 HLT
(3)编辑源程序并保存,汇编源程序的文件扩展名 必须是ASM 。 在源代码编辑器的空白区域,编写程序。
程序编写结束,点击菜单【文件】【另存为……】, 将源程序保存,文件扩展名为.asm。
(4)编译程序 点击工具栏的【编译】按钮,对程序编译,检查语法 是否有错。如果程序有错误,编译不通过,并给出错 误提示的信息。
EMU8086集源代码编辑器,汇编/反汇编工 具以及可以运行debug的模拟器(虚拟机器) 于一身。它能够编译源代码,并在模拟器上一 步一步的执行。
计组8086指令格式实验报告

编码16位模式32位模式操作)000AX EAX AL001CX ECX CL010DX EDX DL011BX EBX BL100SP ESP AH101BP EBP CH110SI ESI DH111DI EDI BHR/M字段受MOD字段控制。
若MOD=11,为寄存器方式,R/M字段将指出第二操作数所在寄存器编号。
MOD=00,01,10为存储器方式,R/M则指出如何计算存储器中操作数地址。
MOD与R/M字段组合的寻址方式见表3。
表3 各种MOD与R/M字段组合编码及有关地址的计算(16位地址模式下)MOD=11寄存器寻址MOD≠11存储寻址、有效地址的计算公式R/M W=1W=0R/M不带位移l量MOD=00带8位位移量MOD=01带16位位移量MOD=10 000AX AL000[BX+SI][BX+SI+D8][BX+SI+D16]001CX CL001[BX+DI][BX+DI+D8][BX+SI+D16]010DX DL010[BP+SI][BP+SI+D8][BP+SI+D16]011BX BL011[BP+DI][BP+DI+D8][BP+DI+D16]100SP AH100[SI][SI+D8][SI+D16]101BP CH101[DI][DI+D8][DI+D16]110SI DH110(直接寻址)[BP+D8][BP+D16]111DI BH111[BX][BX+D8][BX+D16]例如:指令MOV AH,[BX+DI+50H]。
代码格式如下。
OPCODE D W MOD REG R/M DISP—8100010 1 0 01 100 001 01010000指令码:8A6150H。
指令ADD DISP [BX] [DI],DX;DISP=4523H代码格式:OPCODE D W MOD REG R/M DISP—Lo DISP—Hi000000 0 1 10 010 001 00100011 01000101指令码为:01 91 23 45H。
微机原理8086实验指导书

实验一循环程序、分支程序与运算程序的设计一. 实验内容1.在ABC地址处有20个字节数据,今要求传送到CBA地址处,并在屏幕上显示目的串的内容。
试用两种方法实现。
(字节串传送,字节传送循环)2.以BLOCK1和BLOCK2开头的2个字符串,其长度均为LEN,试编程实现:(1)将BLOCK1开头的字符串送到BLOCK2开始的内存空间。
(2)将BLOCK1开始的内存空间全部清零。
3.试编一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则屏幕显示“MATCH”,若不相同则屏幕显示“NO MATCH”4.在ABC和BCD两地址起,各有两个字节的无符号数,试编程实现这两个无符号数的加法以及减法运算,并将结果分别存放到CBA和DCB开始的存储单元中去。
二. 实验目的:1.使学生掌握MASM汇编环境下程序的编辑、编译、连接、调试过程及方法。
2.掌握程序框图的设计方法;3.掌握分支程序的设计方法;4.掌握循环程序的设计方法;三. 实验说明1.实验之前,一定写好预习报告(包括画出程序框图;写出程序),否则不准做实验;2.调试程序程序,改正语法错误和其他错误。
四. 实验报告要求:1.画出程序框图;2.写出预习过程中所写的两个程序;3.写出调试之后的程序和两个程序;实验二主程序与子程序的设计一. 实验内容1.试用子程序结构编写一程序:从键盘输入一个2位十进制的月份数(01~12),然后显示出相应的英文缩写名。
提示:根据题目要求实现的功能,可编写用一个主程序MAIN分别调用几个子程序。
(1)INPUT从键盘接收一个2位数,并把它转换为对应的二进制数。
(2)LOCATE 把输入的月份数与其英文缩写名(如JAN,FEB,MAR,APP,MAY,JUN等)对应起来,制成一个字符表以便查找。
DISPLAY 将找到的缩写字母在屏幕上显示出来,显示可用DOS所提供的显示功能(INT 21H的09号功能)。
实验报告——找出80868088指令系统所有指令的操作码的编码

实验二找出8086/8088指令系统所有指令的操作码的编码一、实验目的本实验旨在利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能。
二、试验原理:1、每条指令1~6个字节不等2、指令的第一字节为操作码,规定指令的操作类型。
第二字节规定操作数的寻址方式接着以后的3~6 字节依据指令的不同取舍。
3、第一个字节的八个二进制位中前六位为操作码的主要部分,之后一位是D字段,然后是W字段,W指出操作数类型:W=0 为字节,W=1 为字,D指出操作数的传送方向:D=0 寄存器操作数为源操作数,D=1 寄存器操作数为目标操作数。
4、用DOS的输入/输出重定向功能,让debug自动执行一批命令。
三、试验内容和步骤1、用试探法(1)打开debug,输入如下内容:-e 100 00 00 00 00 00 00-u 100 1050B5D:0100 0000 ADD [BX+SI],AL0B5D:0102 0000 ADD [BX+SI],AL0B5D:0104 0000 ADD [BX+SI],AL可以得到如下结果:结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。
记下来:指令码汇编指令---------------------------------------------------------------------0B5D:0100 0000 ADD [BX+SI],AL(2)将指令首字节变为01,重复以上实验-e 100 01 00-u 100 1010B5D:0100 0100 ADD [BX+SI],AX得到以下结果:结论:第1字节由00(二进制0000 0000)变为01(二进制0000 0001),ADD指令的第二个操作数由AL变为了AX。
AL为8位寄存器、AX为16位寄存器,印证了W字段的作用,增加一条有用的记录:指令码汇编指令-------------------------------------------------------------------------0B5D:0100 0000 ADD [BX+SI],AL0B5D:0100 0100 ADD [BX+SI],AX(3)将指令首字节变为02,重复以上实验-e 100 02 00-u 100 1010B5D:0100 0200 ADD AL,[BX+SI]得到以下结果:结论:第1字节由00(二进制0000 0000)变为02(二进制0000 0010),ADD 操作的传送方向发生转变,印证了D字段的作用。
8086实验指导书

频率 300KHz 8088
AEDK88ET
与PC机连
ADC0809
8279
VCC GND
8259 蜂呜器 8位开关
8251 8253 62256
39
I/O译码电路
40
第四章 硬件接口实验
41
1
实验一
一、实验要求
双色灯实验
编写程序,以8255为输出口,控制四个双色灯按红、绿、黄的要求发光。
二、实验目的
35
8. 实验仪必须如下显示才算加载成功
只有显示8688 2.1 才算加载成功
36
9.如何知道程序是不是处在执行状态,可观察如下几个位 置:
与
交替闪烁
与
交替闪烁
37
10.如何中止程序的执行
1.中止执行程 序按HALT
2 .恢复初始 状态按RST
38
电位器 译码器地址 8位LED 电源开关
交通灯 DAC0832 8255
26
主程序 调用inword 调用sort BUFF→SI [SI]→AL 调用display SI+1
Display子程序 AL/10→AL,AH AL+30H→AL AH+30H→AH AH→DH AH=2 调用 INT21H显示 显示空格 CX-1 CX=0? 结束
27
A
DH → AL
AH=2调用 INT21H显示 RET
23
实验二 从键盘输入并换
一. 实验要求 从键盘输入5个有符号2位十进制数,将它转换成有符号二进制数, 将结果送入内存中buff开始的单元中。 二. 实验目的 掌握键盘接受数据的方法,码制转换。 三. 实验程序框图 算法: ①符号字符串→标识符MINU。若为负, MINU=1; ②数字字符(31H~39H)→一位十进制数(0~9)a0,a1,a2… ③十进制数转换成十六进制数: 十六进制数=a2x100+a1x10+a0 =(a2x10+a1) x10+a0 ④ 转换后查符号,如果是负数,取补 码制转换部分流程图: 24
8086 实验指导书

第一部分实验系统简介1.1 QTH软件环境介绍QTH-2008PCI实验仪提供了16位和32位两种微机接口集成实验环境,16位的开发环境“QTH-8086B V1.2”是通过PC机的串行接口与实验仪上的8088/8086H模块相连来实现系统开发的,它实际上是通过RS232接口仿真8088/8086的ISA总线环境的;32位的开发环境“QTH-2008PCI-C”是通过PC机的PCI插槽与实验仪上的PCI9052模块相连来实现系统开发的,它通过PCI插卡和PCI9052桥接芯片为用户提供了一个仿真ISA接口,同时它也提供了PCI总线控制芯片全开放的用户总线接口,使用户可以直接开发32位的应用程序。
“QTH-8086B V1.2”和“QTH-2008PCI-C”均可运行于Windows98/Me/2000/XP 操作系统。
但由于从Windows2000/XP操作系统开始,不再提供用汇编语言直接对低层口地址的操作以及BIOS、DOS功能调用的支持。
因此,在Windows2000/XP操作系统下“QTH-8086B V1.2”系统暂不支持BIOS、DOS功能调用,进行一般的汇编语言实验时也必须先打开实验仪电源;而“QTH-2008PCI-C”系统目前只能通过C 语言对端口地址进行操作,虽不能用汇编语言直接对端口地址操作,但可进行一般的汇编语言练习,包括部分DOS功能调用,而且可以运行于没有安装QTH-2008PCI 实验仪的PC机。
因此,在进行纯汇编语言练习时,使用“QTH-2008PCI-C”系统;进行接口操作时,则应使用“QTH-8086B V1.2”系统。
两种系统的使用方法非常接近,掌握一种系统的使用后,另一种系统自然就会使用了。
目前,启东市微机应用研究所正在开发能够在Windows2000/XP操作系统下进行所有微机接口操作的系统。
1.2 QTH软件系统的使用一、安装及进入QTH 系列开发系统QTH 系列开发系统的软件安装非常简单,只要运行随机光盘提供的Setup.exe 应用程序,所有操作均按默认选项进行即可。
8086实验报告

8086实验报告8086实验报告引言:8086微处理器是Intel公司于1978年推出的一款16位微处理器,它在计算机发展历史上具有重要的地位。
本实验旨在通过对8086微处理器的实际应用,深入了解其工作原理和功能。
一、实验目的本实验的目的是通过对8086微处理器的实际操作,掌握其基本指令的使用方法,并了解其内部结构和工作原理。
二、实验材料和方法1. 实验材料:- 8086微处理器开发板- 电源线- 串口线- 电脑2. 实验方法:- 将8086开发板与电脑通过串口线连接- 将电源线插入开发板并连接电源- 打开电脑,启动开发板上的操作系统- 使用汇编语言编写程序,并通过串口线将程序下载到开发板中- 在开发板上运行程序,观察结果并进行分析三、实验过程1. 硬件连接:将8086开发板与电脑通过串口线连接,并确保连接稳定。
2. 软件操作:打开电脑,启动开发板上的操作系统。
使用汇编语言编写程序,并通过串口线将程序下载到开发板中。
3. 程序运行:在开发板上运行程序,并观察结果。
通过分析程序的运行过程,了解8086微处理器的工作原理和功能。
四、实验结果与分析在本次实验中,我们编写了一个简单的程序,用于在开发板上显示一段文字。
通过观察开发板上的显示屏,我们可以看到程序成功地在8086微处理器上运行,并显示出我们编写的文字。
通过对程序的分析,我们可以了解到8086微处理器具有强大的计算和控制能力。
它能够执行各种指令,完成各种复杂的计算任务。
同时,8086微处理器还具有较大的存储空间和高速的数据传输能力,使得它能够处理大量的数据和信息。
此外,8086微处理器还具有良好的扩展性和兼容性。
它可以与其他外部设备进行连接,实现更多的功能和应用。
同时,8086微处理器与其后续型号的兼容性也非常好,这使得它在计算机领域得到了广泛的应用。
五、实验总结通过本次实验,我们深入了解了8086微处理器的工作原理和功能。
我们通过编写程序并在开发板上运行,亲身体验了8086微处理器的强大计算能力和高效数据传输能力。
实验一-8086汇编语言上机调试及基本操作.

实验一:8086汇编语言上机调试及基本操作(验证性)1、实验目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。
(2)掌握工具软件EMU8086。
(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
(4)掌握简单的数值转换算法2、实验说明:计算机中的数值有各种表达方式,这是计算机的基础。
掌握各种数制之间的转换是一种基本功。
3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数4、参考程序:; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元DATA SEGMENT; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDSSTACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACKSTART:MOV AX, DATAMOV DS, AX ; 设置数据段MOV AX, STACKMOV SS, AX ; 设置堆栈段LEA SP, STACK_TOP ; 设置栈顶指针MOV AX, 2afHMOV CL, 100DIV CLMOV RESULT_1, AL ; 除以100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT_2, AL ; 余数除以10, 得十位数MOV RESULT_3, AH ; 余数为个位数MOV AX,4C00H ; 返回DOSINT 21H ;CODE ENDSEND START ; 最后一行要按回车键5、实验及报告要求:1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的伪指令和指令;2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一微机实验系统上机过程一、实验目的⑴熟悉微机汇编语言。
⑵熟悉微机实验系统的上机过程。
二、实验内容选一个Intel 8086汇编语言程序fuli1.asm(教材P97页例题4.14),在实验环境中进行调试,观察运行结果。
了解汇编语言的工作环境和上机步骤和过程。
三、实验原理与方法硬件环境:本实验对硬件环境没有要求软件环境:1、操作系统:DOS 2、编辑程序:EDIT3、汇编程序:MASM4、连接程序:LINK5、调试程序:DEBUG先使用EDIT编写一个汇编语言源程序:fuli1.asm 然后用MASM汇编成目标程序fuli1.obj 最后使用LINK连接成目标程序fuli1.exe四、实验设备1、EL型微机教学实验系统2、PC机1台五、实验步骤1、实验接线本实验无需接线。
2、编写调试程序(1)打开微机系统,进入WINDOWS界面,点击任务栏“开始”、“程序”、“附件”、“命令提示符”。
进入DOS实验操作环境。
(2)输入命令CD\ 回车。
(3)用EDIT编辑源程序文件fuli1.asm。
命令格式:eidt fuli1.asm (4)用MASM对源程序fuli1.asm进行汇编成机器语言程序,直到无错误为止。
命令格式:masm fuli1;。
(5)用LINK 对机器语言目标程序进行连接成可执行文件。
命令格式:link fuli1;。
3、运行实验程序。
命令格式:fuli1让程序中运行,观察结果。
改变X的值,观察不同结果。
六、实验记录与结论程序源代码清单(fuli1.asm)DATA SEGMENTTABLE DW 0,1,4,9,16,25,36,49X DB 6RESU DW ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV BX,OFFSET TABLEMOV AL,XMOV AH,0SHL AX,1ADD BX,AXMOV DL,[BX]MOV DH,[BX+1]MOV RESU,DXMOV CL,4SHR DL,CLADD DL,30HMOV AH,2INT 21HMOV DX,RESUAND DL,0FHADD DL,30HMOV AH,2INT 21HMOV DL,48HMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START小结:谈谈对汇编语言及C语言上机过程的认识(相同之处和不同之处)。
实验二程序综合设计实验一、实验目的⑴巩固单步调试程序的方法。
⑵掌握程序中断点的设置方法,并利用断点调试程序。
二、实验内容选一个Intel 8086汇编语言程序fuli2.asm,编写实现1+3+5+…+49的程序(教材P101页例题4.20),观察程序运行结果,熟悉了解汇编语言的程序的基本算法。
三、实验原理与方法硬件环境:本实验对硬件环境没有要求。
软件环境:1、操作系统:DOS 2、编辑程序:EDIT 3、汇编程序:MASM 4、连接程序:LINK 5、调试程序:DEBUG先使用EDIT编写一个汇编语言源程序:fuli2.asm 然后用MASM汇编成目标程序fuli2.obj 最后使用LINK连接成目标程序fuli2.exe四、实验设备1、EL型微机教学实验系统2、PC机1台五、实验步骤1、实验接线本实验无需接线。
2、编写调试程序(1)打开微机系统,进入WINDOWS界面,点击任务栏“开始”、“程序”、“附件”、“命令提示符”。
进入DOS实验操作环境。
(2)输入命令CD\ 回车。
(3)用EDIT编辑源程序文件fuli2.asm。
命令格式:eidt fuli2.asm (4)用MASM对源程序fuli2.asm进行汇编成机器语言程序,直到无错误为止。
命令格式:masm fuli2;。
(5)用LINK 对机器语言目标程序进行连接成可执行文件。
命令格式:link fuli2;。
3、运行实验程序。
命令格式:fuli2让程序中运行,观察结果。
改变CN的值,观察不同结果。
六、实验记录与结论程序源代码清单(fuli2.asm)DATA SEGMENTRESULT DW ?CN EQU 25DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV AX,0MOV CX,CNMOV BX,1NEXT: ADD AX,BXADD BX,2DEC CXJNZ NEXTMOV RESULT,AXMOV DL,AHAND DL,0FHADD DL,30HMOV AH,2INT 21HMOV DX,RESULTMOV CL,4SHR DL,CLADD DL,30HMOV AH,2INT 21HMOV DX,RESULTAND DL,0FHADD DL,30HMOV AH,2INT 21HMOV DL,48HMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START小结:谈谈单循环结构程序设计,使用汇编语言编写时循环结构的基本组成。
实验三基本I/O口实验一、实验目的1、熟悉74LS273,74LS244的应用接口方法。
2、掌握用锁存器、三态门扩展基本并行输入、输出口的方法。
二、实验内容逻辑电平开关K1-K8的状态输入74LS244,然后通过74LS273锁存,使用发光二极管LED1-LED8输出,利用LED显示电路作为各种流水灯显示。
三、实验原理介绍本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。
1、中央处理器CPU:Intel80862、输入接口芯片:74LS244输出接口芯片:74LS2733、输入设备:开关K1-K84、输出设备:发光二极管LED1-LED8四、实验设备1、EL型微机教学实验系统2、PC机1台五、实验步骤1、实验接线:(↔表示相互连接)CS0 ↔CS244(端口地址04A0H) CS1↔CS273(端口地址04B0H)K1~K8 ↔ IN0~IN7(对应连接)O0~O7↔LED1~LED82、编辑程序,单步运行,调试程序3、调试通过后,全速运行程序,观看实验结果。
实验提示74LS244或74LS273的片选信号可以改变,例如连接CS2,此时应同时修改程序中相应的地址。
六、实验记录与结论程序源代码清单CODE SEGMENTASSUME CS:CODEORG 0100HSTART: MOV DX,04B0HMOV AL,0FFHOUT DX,ALMOV DX,04A0HIN AL,DXTEST AL,01HJNZ STARTMOV DX,04B0HMOV AL,5FHOUT DX,ALMOV CX,8LOP1: ROR AL,1OUT DX,ALMOV BX,0LOP2: DEC BXJNZ LOP2DEC CXJNZ LOP1JMP STARTCODE ENDSEND START小结:74LS244或74LS273的片选信号是否可以改变?如果74LS273连接CS2,此时应如何修改程序中相应的地址?实验四 8255并行口实验一、实验目的掌握8255A的编程原理。
二、实验内容8255A的A口作为输入口(端口地址04A0H),与逻辑电平开关K1~K8相连。
8255A的B口作为输出口(端口地址04A2H),与发光二极管LED1-LED8相连。
编写程序,使得开关的变化在发光二极管上显示出来。
三、实验原理介绍本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。
1、中央处理器CPU:Intel80862、输入、输出接口芯片:Intel82553、输入设备:开关K1-K84、输出设备:发光二极管LED1-LED8四、实验设备1、EL型微机教学实验系统2、PC机1台五、实验步骤1、实验接线CS0↔CS8255 PA0~PA7↔ K1~K8 PB0~PB7↔LED1~LED82、编程并全速或单步运行。
3、全速运行时拨动开关,观察发光二极管的变化。
8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。
8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。
实验中,8255A工作于基本输入输出方式(方式0)(控制字端口地址04A6H)。
实验提示:如果把实验中的开关K1~K8接到B口,发光二极管LED1~LED8接到A口,此时,控制字和程序应同时修改相应的地方。
六、实验记录与结论程序源代码清单CODE SEGMENTASSUME CS:CODEORG 100HSTART: MOV DX,04A6HMOV AL,90HOUT DX,ALSTART1: MOV DX,04A2HMOV AL,0FFHOUT DX,ALMOV DX,04A0HIN AL,DXTEST AL,01HJNZ START1MOV DX,04A2HMOV AL,7FHOUT DX,ALMOV CX,8LOP1: ROR AL,1OUT DX,ALMOV BX,0LOP2: DEC BXJNZ LOP2DEC CXJNZ LOP1JMP START1CODE ENDSEND START小结:举例说明,如果改变LED发光二极管的显示时间,请问应修改程序中的哪些地方? 如果改变LED发光二极管的流水灯显示方式,又应修改程序中的哪些地方?。