微机原理上机(8次实验)

合集下载

微机原理课程上机实验内容

微机原理课程上机实验内容

该课程在微机房实验共分为4次,8个学时,两大部分实验内容,请每次预习下次试验内容,并把程序编好,再来上机调试!最后实验环节的成绩按上机实验时的表现和实验报告两部分相加,请认真对待!第一次实验第一部分汇编语言程序设计实验一熟悉、使用DEBUG调试工具一.上机目的:1.了解并逐步熟悉汇编语言的编辑方法及特点.2.复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。

3.掌握汇编语言的编辑、汇编及连接的过程。

4.了解并逐步掌握运用DEBUG进行调试汇编语言程序。

二.实验内容:1.运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。

2.运用MASM﹒EXE文件进行汇编,修改发现的各种语法错误,直至正确,形成*.OBJ文件。

3.运用LINK.EXE文件进行连接,形成*.EXE文件。

4.仔细阅读附录中的DEBUG部分,掌握各种命令的所有方法。

5.运用DEBUG。

EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。

6.再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。

练习一熟悉DEBUG程序的使用上机要求:一. 运用8086汇编语言,编辑两数排队的简单程序,文件名取为*.ASM。

二. 运用MASM.EXE文件进行汇编,直至正确,形成*.OBJ文件。

三. 运用LINK .EXE文件进行连接,形成*.EXE文件。

四. 认真阅读DEBUG中的命令与功能。

五. 运用DEBUG .EXE文件进行调试。

使用单步执行命令一-T两次,观察寄存器中内容的变化:使用查看存储器数据段命令一-D,观察存储器数据段内数值。

六. 再使用连续执行命令-→G,及使用查看存储器数据段命令一-D,观察存储器数据段内数值的结果是否符号要求。

七. 在以上步骤完成后,可以运用DEPUG中的其它命令,如N、L、u、A、R、Q 等等命令,以进一步了解DEBUG的功能及特点。

实验3微机原理上机

实验3微机原理上机

实验二顺序程序设计
一、实验目的:
掌握顺序程序设计与调试方法
二、实验内容:
编程实现如下功能:
若有一个数为X=10,利用加法指令和移位指令完成:
(1)X*2
(2)X*4
(3)X*10
三、实验要求:
1、上机前先根据要求画出程序流程图并编写源程序
2、上机完成程序的编辑、连接以及调试,记录此过程中出现的问题,调试的结果。

实验三分支程序设计
一、实验目的:
掌握分支程序设计与调试方法
二、实验内容:
编程实现如下功能:
设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大到小排列的程序。

三、实验要求:
3、上机前先根据要求画出程序流程图并编写源程序
4、上机完成程序的编辑、连接以及调试,记录此过程中出现的问题,调试的结果。

实验四分支程序设计
一、实验目的:
掌握循环程序设计与调试方法
二、实验内容:
编程实现如下功能:
ARRAY数组中有20个有符号字数据,编写程序将ARRAY数据中的数据按正、负分别存入PLUS和NEGA中,并统计正数和负数的个数分别存在MAX和MIN中。

三、实验要求:
5、上机前先根据要求画出程序流程图并编写源程序
6、上机完成程序的编辑、连接以及调试,记录此过程中出现的问题,调试的结果。

微机原理上机实验(八+十二)实验报告 8086中断实验 步进电机实验

微机原理上机实验(八+十二)实验报告 8086中断实验 步进电机实验

微机原理上机实验报告实验八:8086中断实验实验十二:步进电机实验微机原理上机实验(八)实验报告实验八:8086中断实验一、实验目的1、了解8086内部响应中断的机制;掌握中断向量的作用。

2、利用实验仪上单脉冲、74HC244电路,不使用8259,实现一个中断实例。

3、复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验内容1、编制程序:拨动单脉冲开关,“”送给8086的INTR,触发中断;8086通过INTA信号,读取中断向量;8086计数中断次数,显示于F5区的数码管上注意:给INTR高电平信号,8086就会相应中断,所以实验开始前,保证单脉冲开关给8086低电平;中断程序中,加一个较长的延时程序,在中断结束前,有时间拨动单脉冲开关,恢复给8086低电平。

三、实验原理图本实验,通过F4区的8个拨动开关,给74HC244设定中断向量;本实验的中断向量是08H,即IN7-IN0位数据是00001000。

同学可以自定义中断向量,实验程序中处理中断向量部分程序作相应调整四、实验步骤1、连线说明:B4区:CS244、BLE ——C1区:GNDB4区:RD(IO区)——A3区:INTAA3区:INTR ——B2区:单脉冲B4区:JP57(D0..D7) ——A3区:JP41B4区:JP52(IN0..7) ——F4区:JP27(1..8)D3区:CS、A0、A1 ——A3区:CS1、A0、A1D3区:PC0、PC1 ——F5区:KL1、KL2D3区:JP20、B、C ——F5区:A、B、C2、运行程序3、实验开始前,保证单脉冲开关给8086低电平;运行程序;向下拨动开关(触发中断),立即向上拨动开关,产生一个“”,观察结果,数码管上显示的次数与拨动开关次数是否对应。

五、实验代码EXTRN InitKeyDisplay:NEAR, Display8:NEAR_STACK SEGMENT STACKDW 100 DUP(?)_STACK ENDS_DATA SEGMENT WORD PUBLIC 'DATA'BUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlag DB 0_DATA ENDSCODE SEGMENTSTART PROC NEARASSUME CS:CODE, DS:_DATA, SS:_STACKMOV AX,_DATAMOV DS,AXMOV ES,AXNOPCALL InitKeyDisplay ;对键盘、数码管控制器8255初始化CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: LEA SI,BufferCALL Display8CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1WriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA AX,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HRETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1CALL LedDisplayDELAY: PUSH BXPUSH CXPUSH DIPUSH SIMOV CX,20DELAY1: LEA SI,BufferCALL Display8loop DELAY1POP SIPOP DIPOP CXPOP BXPOP AX六、实验思考题1.绘制本实验的详细实验电路图?微机原理上机实验(十二)实验报告实验十二:步进电机实验一、实验目的1、了解步进电机的基本原理,掌握步进电机的转动编程方法2、了解影响电机转速的因素有那些二、实验内容编写程序:使用F5区的键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;将相应的数据显示在F5区的数码管上。

微机原理上机报告

微机原理上机报告

《微机原理》上机实验报告1.比较AL,BL,CL中带符号数的大小,将最小的数放于AL中(用JG转换)。

1)流程图2)代码:data segmentd1 db 33hd2 db 23hd3 db 84hdata endscode segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov al,d1mov bl,d2mov cl,d3cmp bl,aljg bbbxchg bl,albbb: cmp cl,almov ah,4chint 21hcode endsend start2.比较buffer开始10个数中最大的偶数,将其存入AL中。

1)流程图2)代码:data segmentbruffer db 54h,48h,26h,46h,37h,49h,62h,55h,79h,16h data endscode segmentassume cs:code,ds:databegin:mov ax,datamov ds,axlea si,bruffermov cx,9mov al,[si]test al,01hjnz nextinc siag: test byte ptr[si],01h ; byte和ptr中间有空格 jnz nextcmp al,[si]jnc nextmov al,[si]next: inc sidec cxjnz agtest al,80h ;测试低位的正负值jz llmov ah,0ffh ;负值用补码表示ll: mov ah,0 ;为正值高位赋0mov ah,4chint 21hcode endsend begin3.将两个32位数相乘。

12)代码:data segmentd1 dd 12345678hd2 dd 87654321hd3 dw ?,?,?,? ;dw不能用“?”data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov bx,d3lea si,d1lea di,d2mov ax,[si]mul word ptr[di]mov [bx],axmov [bx+2],dxmov ax,[si+2]mul word ptr[di]add [bx+2],axadc [bx+4],dxadc word ptr[bx+6],00hmov ax,[si]mul word ptr[di+2]add [bx+2],axadc [bx+4],dxadc word ptr[bx+6],00hmov ax,[si+2]mul word ptr[di+2]add [bx+4],axadc [bx+6],dxadc word ptr[bx+8],00hmov ah,4chint 21hcode endsend start4.将(DX,AX)中32位无符号数左移四位,低四位用0填补,高四位存入CH的低四位中。

《微机原理与接口》课程上机操作实验报告

《微机原理与接口》课程上机操作实验报告

《微机原理与接口》课程上机操作实验报告姓名:王自胜学号: 12212162指导教师:付文秀时间: 2014年12月I/O地址译码与交通灯控制实验一、实验目的通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。

二、实验内容如图5-3,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。

编程使六个灯按交通灯变化规律燃灭。

十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。

(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮3秒左右。

(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。

8255动态分配地址:控制寄存器: 0EC0BHA口地址: 0EC08HC口地址: 0EC0AH (5)转(1)重复。

三、程序流程图四、程序清单DATA SEGMENTX DB ?DATA ENDSSTACK1 SEGMENT STACKDW 100H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATAMOV DS,AX;---------------INIT---------------- MOV DX,0EC0BH ;写控制字MOV AL,80HOUT DX,ALL3: MOV DX,0EC0AHMOV AL,24H ;南北绿灯,东西红灯亮OUT DX,ALCALL DELAYCALL DELAY ;长延时,3s左右CALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYMOV BL,8MOV AL,04HL0: XOR AL,40H ;南北黄灯闪,东西红灯亮OUT DX,ALCALL DELAY ;延时CALL DELAYDEC BL ;闪烁几次JNZ L0CALL DELAYMOV AL,81H ;南北红灯亮,东西绿灯亮OUT DX,ALCALL DELAYCALL DELAYCALL DELAY ;长延时,3s左右CALL DELAYCALL DELAYCALL DELAYCALL DELAYMOV BL,9MOV AL,80HL1: XOR AL,02H ;南北红灯亮,东西黄灯闪OUT DX,ALCALL DELAY ;延时CALL DELAYDEC BLJNZ L1 ;闪烁几次CALL DELAYMOV DL,0FFHMOV AH,06HINT 21HJZ L3 ;六号功能判断若无字符输入ZF=1继续循环;------------------------------MOV AH,4CHINT 21H;-----------延时函数------------DELAY : PUSH CXPUSH DXMOV CX,1FFFHLOP1: MOV DX,0FFFFHLOP2: DEC DXJNZ LOP2LOOP LOP1POP DXPOP CXRETCODE ENDSEND START可编程定时时钟/计数器(8253)一、实验目的掌握8253的基本工作原理和编程方法。

微机原理上机实验报告

微机原理上机实验报告

微机原理上机实验报告实验一基本输入/输出实验:本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入/输出功能。

8255基本输入/输出实验参考接线图如图所示。

流程图:操作步骤:按图示连好线路,在TDPIT中输入如下程序,编译、连接、运行。

DATA SEGMENTCS0 EQU 300OHMY8255_A EQU CS0+00HMY8255_B EQU CS0+01HMY8255_C EQU CS0+02HMY8255_MODE EQU CS0+03HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV DX,3003HMOV AL,10000010BOUT DX,ALTEST_IT:MOV DX,3001HIN AL,DXMOV DX,3000HOUT DX,ALJMP TEST_ITCODE ENDSEND START实验现象:闭合开关,对应控制灯泡发光。

实验二流水线指示灯显示实验:首先分别将A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,在送到端口上,这样循环下去,从而实现流水灯的显示。

8255流水灯显示实验参考接线图如图所示。

流程图:操作步骤:按图示连好线路,在TDPIT中输入如下程序,编译、连接、运行。

DATA SEGMENTCSO EQU 3000HA EQU CSO+0000HB EQU CSO+0001HC EQU CSO+0002HM EQU CSO+0003HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXXOR AX,AXMOV AL,10000000BMOV DX,MOUT DX,AL;MOV DX,B;IN AL,DXL1:MOV AL,00001000BMOV DX,AOUT DX,ALMOV AL,00000001BMOV DX,BOUT DX,ALMOV CX,00FFHC1: MOV BX,CXMOV CX,0FFFFHD1:LOOP D1MOV CX,BXLOOP C1MOV AL,00000100BMOV DX,AOUT DX,ALMOV AL,00000010BMOV DX,BOUT DX,ALMOV CX,00FFHC2: MOV BX,CXMOV CX,0FFFFHD2:LOOP D2MOV CX,BXLOOP C2MOV AL,00000010BMOV DX,AOUT DX,ALMOV AL,00000100BMOV DX,BOUT DX,ALMOV CX,00FFHC3: MOV BX,CXMOV CX,0FFFFHD3:LOOP D3MOV CX,BXLOOP C3MOV AL,00000001BMOV DX,AOUT DX,ALMOV AL,00001000BMOV DX,BOUT DX,ALMOV CX,00FFHC4: MOV BX,CXMOV CX,0FFFFHD4:LOOP D4MOV CX,BXLOOP C4JMP L1MOV AX,4C00HINT 21HCODE ENDSEND START实验现象:灯泡如流水般从左至右依次流动发光,并始终保持在同一时间只有一个灯亮着。

微机原理上机报告

微机原理上机报告

实验一:EMU8086软件安装与使用一、实验目的通过本实验学习EMU8086软件的安装与使用。

二、实验设备PC微机一台,Emu8086仿真软件三、实验任务1. 安装Emu8086仿真软件。

2. 利用Emu8086仿真软件编程。

四、实验原理Emu8086仿真软件就是在Windows下的一种仿真软件,它可以仿真模拟8086的程序运行,并且可以直观地观察CPU寄存器的变化情况。

Emu8086 - Microprocessor Emulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

这对刚开始学组合语言的人会是一个很有用的工具。

它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。

你可以在程序执行当中检视暂存器、旗标以及记忆体。

模拟器会在虚拟PC 中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。

这个软件完全相容於Intel 的下一代处理器,包括了Pentium II、Pentium 4,而相信Pentium 5 也会继续支援8086 的。

这种现象让8086 程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086 的另一个优势是它的指令比较小且相当容易学习。

五、实验内容1. 安装Emu8086仿真软件,熟悉菜单栏,工具栏的每个选项的作用,按照操作流程完成程序的编译、链接,并对编辑窗口中所编写的简单汇编程序进行仿真调试,最后能够输出正确结果。

2. 编写简单程序,实现字符串的显示,显示内容为“姓名(换行)、学号”。

六、实验过程及结果1.EMU8086安装。

图1-1-1 Emu8086的安装图1-1-2 Emu8086的安装图1-1-3 Emu8086的安装图1-1-4 Emu8086的安装图1-1-5 Emu8086的安装图1-1-6 Emu8086的安装2. EMU8086使用,安装完毕,得到窗口如下图1-1:图1-2 Emu进入主界面3. 操作流程(1)file->new->empty workplace,编辑程序,如下图1-2:图1-3 Emu8086的安装(2) file->save,保存程序(**.asm格式),完成程序的编辑.(3) assmbler->compile,完成程序的编译和链接,如下图1-3:4. emulator->show emulator,开始仿真调试,如下图1-4:图1-5 Emu程序仿真调试界面5. 左键点击run运行程序,结果如图1-5:图1-6 Emu程序仿真调试结果界面七、实验感想这是微机原理的第一次上机,我熟悉了用emu8086的使用方法,通过这个模拟仿真软件初步了解了计算机的原理。

计算机微机原理上机实验

计算机微机原理上机实验

声光报警器接口实验一、实验目的熟悉可编程并行接口芯片8255的使用和学习开关量接口电路及其控制程序的设计方法。

二、实验内容基本实验按下SW开关,开始报警,即喇叭发声,同时LED灯闪光。

按任意键,结束报警,喇叭停止发声,LED熄灭。

三、实验要求利用MFID实验平台和声-光报警器模块板进行硬件电路连接,利用MF集成开发环境进行声光报警器软件控制程序设计、调试,直到报警器正常工作。

四、实验原理a)声-光报警器模块板电路原理如图1所示。

模块板上包括4种简单的I/O外设:扬声器、8个LED彩灯、8位DIP开关及按钮开关SW。

它们都是并行接口的对象,虽然功能单一,结构简单,但都必须通过接口电路才能进入微机系统,接受CPU的控制,发挥相应的作用。

b)声-光报警器接口的设计原理与方法,参考“微机接口技术及应用”教材第7.2节(P142)图1 声-光报警器模块板电路原理框图五、实验资源配置1.电源:机内供电,实验时将电源开关打到“内”的位置上。

2.I/O端口地址:8255的4个端口地址为300H~303H。

其中A口=300H,B口=301H,C口=302H,命令口=303H。

3.中断资源:IRQ10。

4.软件资源:MFID软件提供的用户应用程序集成开发环境与工具,包含了丰富的汇编语言和C语言程序开发软件包。

六、实验的硬件连接与软件编程c)实验资源配置好之后,使用26芯扁平电缆线(短型),将声-光报警器模块板与平台上的并行接口插座J5连接起来如图2所示,即可进行声-光报警接口实验。

图2 声-光报警器模块与CPU的连接d)实验步骤:步骤一:硬件连线:跳线设置:单线将模块电源L区JP7和JP8跳接;排线将模块电源L区JP8跳接。

单线连法如右图:排线接法如右图:步骤二:将平台的电源开关拔到“内”的位置上。

在配套集成环境下进行硬件检测,达到初始化芯片的目的.步骤三:(学生实验步骤)打开集成环境在“文件”菜单下学生可以选择新建自己的C++/ASM文件或者使用集成环境自带的C++/ASM参考程序进行调试、运行。

微机原理上机指导书

微机原理上机指导书

姓名:_________________ 学号:_________________ 专业:_________________日期:_________________目录目录 (1)实验1 DEBUG命令的应用 (2)实验2 汇编语言程序上机过程 (13)实验3 分支程序实验 (16)实验4 循环程序实验 (19)实验5 子程序实验 (22)实验6 字符处理程序实验 (26)实验7 排序程序设计 (30)实验8 计算机钢琴程序 (32)实验9 键盘和窗口程序 (38)实验10 磁盘文件操作程序 (41)实验1 DEBUG命令的应用一、实验目的1.学会DEBUG调试程序的命令应用;2.观察各通用寄存器、标志寄存器和存储器的变化情况;3.加深对汇编语言指令的理解。

二、实验设备和仪器1.计算机2.windowsXP操作系统3.Win-Masm汇编软件三、实验内容及要求要求学会使用DEBUG常用命令,并熟悉8086常用指令的使用。

调试一段程序,使用DEBUG进行相应的操作。

1.DEBUG介绍DEBUG调试程序是以DOS外部命令程序的形式提供的,它的文件名是DEBUG.COM。

DEBUG的命令是具有规定格式的特殊字符串。

命令是单个字母,通常后面还有1个或1 个以上的参数。

DEBUG支持基本的8086/8088汇编语言语法,DEBUG下的汇编语言有下面一些特点和规则:(1)数值都是十六进制数,并且不加尾缀“H”。

(2)不能使用符号常量和符号地址。

(3)不能使用绝大部分伪指令,但两个最常用的伪指令DB和DW能被使用,用于直接把字节和字数据置人相应存储单元。

如:DB 1,2,3,4,“ABCD”DW 1234,5678(4)可以使用属性操作符“PTR”对DEBUG不能明确类型的操作数进行说明。

如:INC BYTE PTR [BX]。

(5)DEBUG的A命令汇编程序能根据转移目标地址的距离自动地汇编出短、近或远的转移或调用指令。

微机原理8098实验实验报告

微机原理8098实验实验报告

实验一加减乘除基本运算ORG 2080HLD SP,#00C0H;设置栈指针LDB AL,#11H;11H给ALLDB BL,#7FH;7FH给BLADDB CL,AL,BL;11H+7FH结果存入CLLCALL CLEAR;清空数据LDB AL,#11HLDB BL,#7FHSUBB CL,AL,BL;11H—7FH结果存入CLLCALL CLEARLD AX,#1111HLD BX,#7FFFHADD CX,AX,BX;1111H+7FFFH结果存入CX LCALL CLEARLD AX,#1111HLD BX,#7FFFHSUB CX,AX,BX;1111H—7FFFH结果存入CX LCALL CLEARLDB AL,#11HLDB BL,#7FHMULB CL,AL,BL;11H*7FH结果存入CLLCALL CLEARLD AX,#1111HLD BX,#7FFFHMUL CX,AX,BX;1111H*7FFFH结果存入CX LCALL CLEARLD AX,#1111HLDB BL,#7FHDIVUB AX,BL;1111H/7FH结果存入AX LCALL CLEARLD AX,#7FFF1111HLDB BL,#5FFFHDIVUB AX,BL;7FFF1111H/5FFFH结果存入AX LCALL CLEARH:SJMP H;循环CLEAR :CLR AX ;清空原有数据CLR BXCLR CXCLRB CLCLRB ALCLRB BLRETEND实验二显示程序设计EX EQU 26HORG 2080HMAIN: LD SP,#0100H;设置堆栈指针LD AL,#0FHSTB AL,6100H[0];将OFH送入8155命令/状态寄存器LD 30H,#5678H;56H存入31H,78H存入30HLD 32H,#1234H;12H存入33H,34H存入32HLCALL DATACH;调用DA TACH子程序MAIN1:LCALL DISPLAY;调用DISPLAY子程序SJMP MAIN1;循环DA TACH:LD AX,#30H;30H给AXLD BX,#4;4给BXLD CX,#38H;38H给CXDA TALOOP:LDB DL,[AX]+;AX的内容给DL,且AX内容加一LDB DH,DL;把DX低字节内容给高字节ANDB DL,#0FH;把DX低字节内容前4位清零SHRB DH,#4;把DX高字节内容右移4位ST DX,[CX]+;将变换后的DX的内容送入CX,CX内容加一DJNZ BX,DA TALOOP;BX内容减1非零循环RETDISPLAY:LD AX,#38H;38H给AXLDB BL,#8;8给BLLDB BH,#07FH;01111111给BHDISPLOOP:LDB CX,[AX]+;AX内容给CX并加1LDB DX,TAB[CX];将CX内容对照字形表写入DXSTB DX,6101H[0];A口控制字形STB BH,6102H[0];B口控制字位SHRB BH,#1;BH右移1位ORB BH,#80H;使显示数码管右移1位LCALL DELAY;调用DELAYDJNZ BL,DISPLOOP;BL减1非零跳转到DISPLOOPRETDELAY:LDB 60H,#205;205给60HDELAY1:NOPNOP;延时8个状态周期DJNZ 60H,DELAY1 循环等待205*(8+9+12)个状态周期RETTAB:DCB 0FCH,60H,0DAH,0F2H,66HDCB 0B6H,0BEH,0E0H,0FEH,06HEND实验三中断应用EX EQU 24HEL EQU 24HEH EQU 25HSECOND EQU 26HMINUTE EQU 27HHOUR EQU 28HFX EQU 2AHFL EQU 2AHFH EQU 2BHGX EQU 2CHTN EQU 2EHORG 2000H;DCW T1INT;定义T1中断,其地址为2000H ORG 2080HMAIN: LD SP,#0C0HDICLRB INT_PEND;中断登记寄存器清零LDB INT_MASK,#01H;允许定时器中断LDB IOC1,#04H;允许定时器T1溢出中断LD BX,#6100HLDB AL,#0FHSTB AL,6100H[0];0FH送入6100H初始化8155 ; STB AL,[BX]+; LDB AL,#12H; STB AL,[BX]+; LDB AL,#7FH; STB AL,[BX]CLRB 26HCLRB 27HCLRB 28HCLR 30HCLR 32HCLR 34H ;清零各项LD TN,#0CHEI;中断允许H: LCALL DISP;调用DISPLJMP H;循环DISP: LD GX,#0030HLD CX,#0038HLDB DL,#4LOOP1: LDB FL,[GX]+;0030H给FL后加1LDB DH,FL;FL给DHCLRB FH ;FH清零ANDB FL,#0F0H;FL后四位清零SHRB FL,#04H ;FL右移4位LDB EL,TAB[FX];对照字形表查FX内容写入ELSTB EL,[CX]+;EL内容给CX,CX内容加1LDB FL,DHANDB FL,#0FH ;FL前四位清零LDB EL,TAB[FX] ;对照字形表查FX内容写入ELSTB EL,[CX]+;EL内容给CX,CX内容加1DJNZ DL,LOOP1;DL内容减1非零循环CHG: LDB EL,3BHLDB 3CH,ELLDB EL,3AHLDB 3BH,ELLDB 3AH,#02HLDB 3DH,#02HLD GX,#0038HLDB DL,#8;8送入DLLDB DH,#07FH;01111111送DHLOOP2: LDB FL,[GX]+STB FL,6101H[0];A口字形STB DH,6102H[0];B口字位LCALL DELAY;调用DELAYSHRB DH,#1;DH右移1位ORB DH,#80H;控制字位显示DJNZ DL,LOOP2;DL减1非零循环RETT1INT: PUSHF;标志进栈,保护现场DJNZ TN,RETURN1;T1溢出8次后跳转到RETURN1LD TN,#08H;LCALL SEC;调用SECRETURN1:POPF 出栈RETDELAY: LDB 80H,#250L: NOPDJNZ 80H,LRET ;25*250状态周期TAB: DCB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H SEC: INCB SECOND ;SECOND字节增1CMPB SECOND,#60 ;SECOND与60比较JNE RETURN ;SECOND不等于60转移到RETURN CLRB SECONDINCB MINUTE ;MINUTE 字节增1CMPB MINUTE,#60 ;MINUTE与60比较JNE RETURN ;MINUTE不等于60转移到RETURN CLRB MINUTEINCB HOUR ;HOUR字节增1CMPB HOUR,#24 ;HOUR与60比较JNE RETURN ;HOUR不等于24转移到RETURN CLRB HOURRETURN: LDB AL,SECOND ;秒放入AL中LDB AH,#00H ;AX高位清零LD BX,AX ;AX给BXDIVB AX,#0AH ;AX除以10SHLB AL,#4 ;AX低位左移4位ORB AH,AL ;将秒送入AH中LDB 33H,AH ;将AH中内容送入33H中LDB AL,MINUTELDB AH,#00HLD BX,AXDIVB AX,#0AHSHLB AL,#4ORB AH,AL ;将分送入AH中LDB 31H,AH ;将AH中内容送入31H中LDB AL,HOURLDB AH,#00HLD BX,AXDIVB AX,#0AHSHLB AL,#4ORB AH,AL ;将时送入AH中LDB 30H,AH ;将AH中内容送入30H中RETEND实验四A/D采集应用AD_RESULT_LO EQU 02HAD_RESULT_HI EQU 03HTEMP EQU 72HTEMPLO EQU TEMPTEMPHI EQU TEMP+1CONTROL EQU 70HEX EQU 28HEL EQU EXEH EQU EX+1FX EQU 30HFL EQU FXFH EQU FX+1ORG 200AHDCW HSO_INT ;定义软件定时器中断服务程序入口地址ORG 2018HDCB 0BDHORG 2080HLD SP,#0100H ;定义中断指针DICLR BXCLR CXCLR DXCLR EXCLR FXCLR TEMPCLR CONTROLLDB CONTROL,#0FH ;0FH放入CONTROL中STB CONTROL,6100H[0] ;初始化8155LDB INT_MASK,#20H ;开放软件定时器LDB HSO_COMMAND,#18H ;选定D3通道,中断允许ADD HSO_TIME,T1,#50000 ;将T1值加50000放在时间值寄存器中EIWAIT: LCALL DISPLAY ;调用DISPLAYSJMP W AIT ;循环HSO_INT:;LDB BX,#04HLOOP: LDB AD_COMMAND,#08H ;启动A/D命令寄存器,启动A/D NOPNOP ;延时8个状态周期HERE: JBS AD_RESULT_LO,3,HERE ;若S=1继续查询LDB TEMPHI,AD_RESULT_HI ;暂存A/D转换结果LDB TEMPLO,AD_RESULT_LOSHR TEMP,#6 ;将所得结果右移6位; ADD CX,TEMP; DJNZ BX,LOOP; SHR CX,#02LD CX,TEMPMULU 48H,CX,#500 ;转换后的温度存500放在48H中SHRL 48H,#10 ;48H中的内容*1024LD EX,48H ;48H中的内容放入EX中DIVUB EX,#100 ;EX中的内容除以100,百位存在EL中,十位与个位在EH中LDBZE FX,EH ;EH中内容转化为字放入FXDIVUB FX,#10 十位放入FL,个位放入FH;CLR CXLDB HSO_COMMAND,#18HADD HSO_TIME,T1,#50000 ;每隔1秒采样一次RETDISPLAY:LDBZE 40H,FH ;FH转化为字放入40H; LD 40H,#0LDB 50H,TAB[40H] ;40H中的内容在字形表中查询后方在50H中STB 50H,6101H[0] ;50H中内容送入段选LDB AL,#11111110BSTB AL,6102H[0] ;选定位选在右第一个数码管显示LCALL DELAY ;调用延时给显示以足够反应时间; LD 42H,#1LDBZE 42H,FL ;FL转换为字存入42H中LDB 50H,TAB[42H]STB 50H,6101H[0]LDB AL,#11111101BSTB AL,6102H[0] ;同理在第二个数码管上显示十位LCALL DELAY; LD 40H,#2LDBZE 44H,ELLDB 50H,TAB[44H]ADDB 50H,#1STB 50H,6101H[0]LDB AL,#11111011BSTB AL,6102H[0] ;同理在第三个数码管上显示百位LCALL DELAYRETDELAY: LD 60H,#200 ;延时DELAY1: NOPNOPDJNZ 60H,DELAY1RETTAB: DCB 0FCH,60H,0DAH,0F2H,66HDCB 0B6H,0BEH,0E0H,0FEH,0F6HEND实验五高速输入HIS的应用R1 EQU 50HR2 EQU 52HR2L EQU 52HR2H EQU 53HR3 EQU 54HR4 EQU 56HR4L EQU 56HR4H EQU 57HN EQU 70HHSI_TIME EQU 04HORG 2000HDCW T1INTORG 2004HDCW HSIINTORG 2080HMAIN: LD SP,#00C0H ;设堆栈指针DI ;关中断LDB INT_MASK,#05H ????LDB IOC0,#04HLDB IOC1,#04HLDB HSI_MODE,#04H ????LDB AL,#0FH ;00001111送入ALLD BX,#6100H ;6100H送入BXSTB AL,[BX] ;将AL送入6100HCLRB INT_PENDING ;中断登记寄存器清零LDB N,#08HEIH: LCALL DISP ;调用DISPSJMP H ;循环HSIINT: PUSHFLDB AL,HSI_STATUS ????LD R1,HSI_TIME ????LD R2,R1SUB R2,R3SUBC R4,#0LDB 30H,R4HLDB 31H,R4LLDB 32H,R2HLDB 33H,R2LCLR R4LD R3,R1POPFRETT1INT: PUSHF ;标志入栈INC R4DJNZ N,RETURN ;N减1非零跳转LDB N,#08H ;8次循环LCALL FEN ;调用FENRETURN: POPF ;出栈RET ;返回FEN: LD BX,#0030HLD CX,#0038HLDB DL,#4 ;赋值LOOP1: LDB AL,[BX]+ ;BX内容给AL,BX内容加1LDB DH,AL ;AL给DHCLRB AH ;清空AX高位SHRB AL,#4 ;AX低位右移4位LDB 60H,TAB[AX] ;对照表查AX内容给60HSTB 60H,[CX]+ ;60H内容给CX内容,CX内容加1LDB AL,DH ;DX高位给AX低位ANDB AL,#0FH ;AX低位前4位清零LDB 60H,TAB[AX]STB 60H,[CX]+DJNZ DL,LOOP1 ;DL减1非零跳转到LOOP1RETDISP: LD BX,#0038HLDB DL,#8LDB DH,#7FH ;01111111给DHLOOP2: LDB AL,[BX]+LD CX,#6101H ;A口字形STB AL,[CX]+STB DH,[CX]LCALL DELAY ;调用延时,显示SHRB DH,#1 ;DH右移1位ORB DH,#80H ;控制字位DJNZ DL,LOOP2 ;DL减1非零循环RETDELAY: LDB 62H,#5 ;延时L: NOPDJNZ 62H,L ;判断延时是否结束,循环RETTAB: DCB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4HDCB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND实验六高速输出HSO的应用ORG 2006HDCW HSO_INTORG 2080HLD SP,#0100HCLRB INT_PEND ;清中断登记寄存器LDB INT_MASK,#08H ?EILCALL HSO_GEN ;调用HSO_GENSJMP $HSO_GEN: LDB HSO_COMMAND,#20HADD HSO_TIME,T1,#03H ?NOPNOPLDB HSO_COMMAND,#00HADD HSO_TIME,T1,#25000NOPNOPLDB HSO_COMMAND,#30HADD HSO_TIME,T1,#50000NOPNOPRETHSO_INT: LCALL HSO_GEN ;调用HSO_GEN RETEND实验七串口通信的应用发送ORG 200CHDCW SINT ;定义SINT位置为200CHORG 2080HMAIN: LD SP,#0F0HDILDB INT_MASK,#40H ;允许串行口中断CLRB INT_PEND ;清空中断登记寄存器LDB IOC1,#20H ;选择TXDLDB SP_CON,#09H ;允许接收,不允许奇偶校验,方式1 LDB BAUD_RA TE,#4DH ;写波特率低字节LDB BAUD_RA TE,#80H ;写波特率高字节DA TA1:LDB 30H,#0LDB 31H,#1LDB 32H,#2LDB 33H,#3LDB 34H,#4 ;写数据LD BX,#0030HEI ;允许中断LDB AL,#05HSTB AL,SBUF ;AL给SBUFM: SJMP M ;循环等待SINT: PUSHFLDB AL,SP_STA T ;把串行口状态寄存器的内容给ALJBS AL,6,L ;AL第六位为1转移至LCMP BX,#0035H ;比较BX和0035HJE N ;相等转移到NLDB AL,[BX]+STB AL,SBUFSJMP NL: LDB AH,SBUFN: POPFRET接收ORG 200CHDCW SINTORG 2080HMAIN: LD SP,#0F0HDILDB INT_MASK,#40H ;允许串行口中断CLRB INT_PEND ;清空中断登记寄存器LDB IOC1,#20H ;选择TXDLDB SP_CON,#09H ;允许接收,不允许奇偶校验,方式1 LDB BAUD_RA TE,#4DH ;写波特率低字节LDB BAUD_RA TE,#80H ;写波特率高字节DA TA1: LD BX,#0030HCLR 38HEI ;允许中断M: SJMP M ;循环等待SINT: PUSHFLDB AL,SP_STA T ;把串行口状态寄存器的内容给ALJBS AL,6,L ;AL第六位为1转移至LSJMP N ;跳至NL: LDB DL,SBUF ;SBUF内容给DLK: LDB AL,SP_STA T ;把串行口状态寄存器的内容给AL JBC AL,6,K ;AL第六位为0转移至KLDB AL,SBUFSTB AL,[BX]+ADDB 38H,AL ;求和DJNZ DL,KSTB 38H,SBUF ;将所得和送至SBUFN: POPFRET实验八串行E2PROM应用RAMADR EQU 20HEEADR EQU 22HN EQU 23HBUF EQU 24HK DSB 25HORG 2080HLD STACKP,#0C0H ;设置栈指针DI ;关中断LCALL CS0LCALL SK0LCALL DI0 ;调用LCALL WRENABLD RAMADR,#0030H ;0030H给RAMADR LDB EEADR,#0A0H ;0A0H给EEADRLDB N,#4H ;N赋4LCALL EEWR ;调用EEWRH1: NOPNOPLD RAMADR,#0040H ;0040H给RAMADR LDB EEADR,#0A0H ;0A0H给EEADRLDB N,#4H ;N赋4LCALL EERD ;调用EEWDNOPH: SJMP H ;短跳转WRENAB: LCALL CS1LCALL DI1 ;DI=1LCALL SK1LCALL SK0LCALL DI0 ;DI=0LCALL SK1LCALL SK0LCALL DI0 ;DI=0 写允许时序LCALL SK1LCALL SK0LDB BUF,#0FFH ;0FF给BUFLCALL WR1BYTE ;调用WR1BYTELCALL CS0LCALL DI0LCALL SK0RET;****************************************************EEWR: NOPLCALL CS1LCALL DI1 ;DI=1LCALL SK1LCALL SK0LCALL DI0 ;DI=0LCALL SK1LCALL SK0LCALL DI1 ;DI=1 写时序LCALL SK1LCALL SK0;LDB BUF,EEADR ;WRITE ADD AND DA TELCALL WR1BYTELDB BUF,[RAMADR]+;把BUF内容给RAMADR内容,然后RAMADR内容加1 LCALL WR1BYTE ;调用WR1BYTELDB BUF,[RAMADR]+ ;把BUF内容给RAMADR内容,然后RAMADR内容加1 LCALL WR1BYTELCALL CS0LCALL SK0LCALL DI0LCALL DELAY ;调用延时INCB EEADRDJNZ N,EEWRRET;DELAY: LD 64H,#4000DLL: DEC 64HJNE DLLRET;WR1BYTE: NOPLDB K,#08WR1: SHLB BUF,#1JC WR2LCALL DI0LJMP WR3WR2: LCALL DI1WR3: NOPLCALL SK1LCALL SK0DJNZ K,WR1RET;*************************************************** EERD: LCALL CS1LCALL DI1 ;DI=1LCALL SK1LCALL SK0LCALL DI1 ;DI=1LCALL SK1LCALL SK0LCALL DI0 ;DI=0 读时序LCALL SK1LCALL SK0LDB BUF,EEADR ;WRIT ADDRESSLCALL WR1BYTELCALL SK1LCALL SK0LCALL RD1BYTESTB BUF,[RAMADR]+LCALL RD1BYTESTB BUF,[RAMADR]+LCALL CS0LCALL SK0LCALL DI0INCB EEADRDJNZ N,EERDRET;************************************************ RD1BYTE:LDB K,#08HLDB BUF,#00HRDLOOP: LDB 54H,PORT0SHLB BUF,#1JBS 54H,7,GA1GA0: ANDB BUF,#0FEHSJMP G2GA1: ORB BUF,#1G2: NOPLCALL SK1LCALL SK0DJNZ K,RDLOOPRET;;======SC0=============CS0: LDB HSOCOM,#00H ;CS=0ADD HSOTIM,TIMER1,#3NOPNOPNOPRETCS1: LDB HSOCOM,#20H ;CS=1 ADD HSOTIM,TIMER1,#3NOPNOPNOPRETSK0: LDB HSOCOM,#01H ;SK=0 ADD HSOTIM,TIMER1,#3NOPNOPNOPRETSK1: LDB HSOCOM,#21H ;SK=1 ADD HSOTIM,TIMER1,#3NOPNOPNOPRETDI0: LDB HSOCOM,#02H ;DI=0 ADD HSOTIM,TIMER1,#3NOPNOPNOPRETDI1: LDB HSOCOM,#22H ;DI=1 ADD HSOTIM,TIMER1,#3NOPNOPNOPRET。

0902微机原理实验

0902微机原理实验

0902微机原理实验目录:第一次:debug应用第二次:分析中断执行过程第三次:I/O接口编程第四次:简单I/O口扩展实验第五次:8255并行口实验第六次:数码显示第七次:8253定时器/计数器接口实验附录-------------------------------------------------------------------------------------------第一次:debug应用一、实训题目:debug应用二、实训目的:熟悉debug.exe的常用命令,然后通过测试,看看你的名字对应的汉字在计算机的存储器中是用什么代码表示的。

三、实训步骤:首先在计算机中找到应用程序debug.exe。

a、在D盘上建立一个,以你的名字命名的文件夹(如li),然后将你找到的debug.exe应用程序拷贝到这个文件夹中;b、在这个文件夹中建立一个名称为你姓名汉语拼音的第一个字母文本文件(这个文本文件名称一定要用字母)如:li.txt,然后用中文输入你的姓名,存盘。

c、在这个文件夹中执行debug.exe应用程序;d、打开你的那个文本文件(li.txt);e、将它打开,如-n li.txt;f、将它装入内存,如-l;g、最后利用-d命令,在存储单元中显示文本文件中的汉字编码内容;h、记录下(文本中的内容利用debug.exe应用程序看到的)存储器中的代码;四、实训要求:写出报告(写出上机过程和结论),进行总结。

可以在用w命令写之前用r命令来修改cx中的内容,这样可以控制将读入到内存的文件取出cx中的字节数写到新文件中以下是debug.exe应用程序中常用的命令:-q:退出debug.exe应用程序-n:若文件存在则打开,若文件不存在则建立-l:将已打开的文件装入内存-d:显示存储单元的内容-e:修改存储单元的内容-w:将修改过的存储单元内容写入某个文件-u:将存储单元的内容进行反汇编-t:单步跟踪执行-p:单步快速执行-g:全速执行-a:输入源程序-------------------------------------------------------------------------------------------第二次:分析中断执行过程一、实训题目:分析中断执行过程二、实训目的:1、了解微机的不同设备对应不同的中断类型号;2、掌握不同中断的执行过程;3、分析中断产生的状态和返回的位置;4、理解中断的特点;三、实训步骤:1、在“系统信息”的左窗格中,展开“硬件资源”的“+”之后,选定并打开“IRQX”中的内容,然后在右窗格中查找关于鼠标ps/2的中断类型号;2、在调试程序Debug中用下列程序进行测试、分析:MOV AX,1234MOV DS,AXINT 12;这是一条关键的中断调用指令MOV AX,FFFF;为了观察中断的返回而设置的这4条指令MOV BX,FFFFMOV BX,FFFFMOV BX,FFFF3、输入完源程序之后,单步运行,在第三条指令还未运行之前,观察各个寄存器的状态,和第三条指令运行完成之后比较CS和IP这两个寄存器的状态。

微机原理上机(8次实验)ppt课件

微机原理上机(8次实验)ppt课件
③ 写出8253门控信号(GATE)的译码电路地址;
④ 若门控使能一直有效,完成8253的初始化及其应用编程(程 序基本框架已给出,加入相应初始化及其应用程序段),编 译仿真结果正确。(能看到LED闪烁,以及示波器波形)
⑤ 若门控使能信号每隔5秒翻转一次,请完成上述程序
9
微机原理上机7- 8251应用
10
微机原理上机8- ADC/DAC应用
1、ADC0808应用, (参考13.5节、 11.3.3节) 采样可变电阻端的电压值,利用电压表和数码管观察输出电
压值。 ① 掌握端口地址译码,8255应用,数码管显示原理; ② 掌握ADC0808工作过程,输入电压与输出数字量之间关系; ③ 理解程序;
6
微机原理上机4-IO接口
A7 A6 A5 A4 A3 A2 A1 A0 00110000 00100100 01101000 完成上述内容后,修改电路,将端口地址改成68H,并修改相应代码 ,重新仿真,搞清楚I/O端口译码电路和端口地址之间的对应关系。
7
微机原理上机5- 8255应用
① 练习lab2_8255例子,编译,运行,查看仿真状态(参考例9-3 和12.3节) ➢ 按键按下,数码管显示相应的键值,发光二极管低四位 对应键值的二进制数
❖ 掌握8086汇编上机调试方法及步骤:
① 编写汇编源程序(文件名:file.asm) ② 汇编:MASM file.asm ③ 链接:LINK file.obj ④ 运行:file.exe ⑤ 调试:DEBUG file.exe
❖ 掌握调试中常用的DEBUG命令:
➢ D(显示内存单元内容) ➢ R(显示寄存器内容) ➢ P/T(单步执行) ➢ G(运行) bat,填上相应扩展名后点“OK” 。 (参考6.3.2和12.1节) ① 点击“Source /Builde All” ② 点击左下角“运行/单步/暂停/停止”进行仿真

微机原理上机实验报告 实验报告内容5

微机原理上机实验报告 实验报告内容5
0
.MODEL TINY
COM_ADDR EQU 0263H
T0_ADDR EQU 0260H
T1_ADDR EQU 0261H
.STACK 100
12
.CODE
START: MOV DX,COM_ADDR
MOV AL,35H
OUT DX,AL ;计数器T0设置在模式2状态,BCD码计数
MOV DX,T0_ADDR
OUT DX,AL ;CLK1/1000
JMP $ ;OUT1输出1S的方波
END START
三、实验结果及其分析
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL ;CLK0/1000
MOV DX,COM_ADDR
MOV AL,77H
OUT DX,AL ;计数器T1为模式3状态,输出方波,BCD码计数
MOV DX,T1_ADDR
MOV AL,00H
OUT DX,AL
MOV AL,10H
《微机原理与接口技术》课程实验报告
实验名称
8253方波实验
姓名
系Hale Waihona Puke 专业班级学号实验日期
指导教师
成绩
一、实验目的和要求
了解8253的内部结构、工作原理;了解8253与8086的接口逻辑;熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。
二、实验内容(包括实验步骤和代码)
1、编写程序:使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。2、连接线路,验证8253的功能,熟悉它的使用方法。

微机原理上机实验

微机原理上机实验

2)基本指令的用法
在debug中输入各条基本指令并执行,观察指令的执行情况。
四、实验问题探讨
1. 2. 3. 4.
如何利用Debug去观察中断向量表? 机器复位后执行的第一条指令在哪儿?是什么指令? 在debug中输入16进制数时,需要键入H吗? 从当前位置开始执行指令到CS:0212H处,在Debug 中应该使用什么命令?
运行命令G
格式: 功能
G [=地址][地址[地址…]]
执行用户正在调试的程序,其中,地址为执行的 起始地址,以CS的内容作为段地址,以等号后面 的地址为偏移地址。后面的地址为断点地址。
命名命令N
格式:N 文件名 在调用DEBUG时,如果没有文件名,需要用N命令将
编译的的文件名格式化到CS:5CH的文件控制块中
实验2 简单程序的编制及汇编过程
一、实验目的:
1. 2. 掌握masm、link的基本用法 编制基本的宏汇编程序
3、能编制基本的宏汇编程序,能实现分支结构、循环结构
的程序编制。
4、熟悉汇编集成开发环境QTH。(可选)
二、实验设备:
QTH-2008PC实验设备一台,键盘、鼠标、显示器各
一件。
三、实验内容
8、可编程计数/定时器8253的使用 9、可编程中断控制器8259A的操作
10、综合实验
实验1
调试工具debug的使用及基本指令的用法
一、实验目的:
1、学习DEBUG常用命令的使用 2、了解程序运行的过程 3、熟悉所学指令的功能,给定指令,记录指令执行后的状态 4、了解上述各类指令对标志寄存器的影响
器语言
宏汇编程序在DOS下运行
MASM中的主要文件类型
汇编源程序(.ASM)

微机原理实验 实验八

微机原理实验 实验八
2. 3. 编写程序让扬声器发出声音; 更改8253的设置,让扬声器发出不同音调 高低的声音
实验要求: 1. 能够正确连接硬件电路;
2.
3. 4.
编写调试程序做后面的题;
写好后,老师评分 写实验报告
实验原理:
1. 硬件连接逻辑图
实验原理:
2. 硬件连接原理图
8253端口地址: 304H~307H 8255端口地址: 300H~303H
开始 初始化8255 初始化8253工作方式 置位PC0
设置记数初值 GATE2变高 结束
MOV AX,
OUT DX, AL MOV AL, AH
OUT DX, AL
3. 实验箱实物图
连接J3,J4; 把J1连接到电脑
六 实验步骤:
正确连接硬件 设置8255工作在适当的方式 设置8253工作在适当的方式 编程让扬声器发声 修改参数,让扬声器的声调变化 记录下参数与声调变化的关系; 3. 编写程序播放音乐”两只老虎” 乐谱如下:1 2 3 1 1 2 3 1 3 4 5 3 4 5 4. 编写程序实现键盘钢琴 1. 2.
3. 硬件分析: 使用8253发出方波信号, 使用8255控制8253的工作
扬声器发声的条件: 工作频率在20hz~20khz范围 PC0工作在高电平 8253的工作方式: 使用计数器2, 方式3, GATE2 受8255控制
时钟输入频率1.19318Mhz
4.
知识补充:
计数器使用16位时,设置初值时,从同一个端口输出即可, 先输出低字节,再输出高字节 如: 设置初始值为9650H,
把j1连接到电脑设置8255工作在适当的方式设置8253工作在适当的方式编程让扬声器发声修改参数让扬声器的声调变化记录下参数与声调变化的关系

微机原理上机实验报告1

微机原理上机实验报告1

201406
微机原理上机实验报告
实验一
班级:物联网1班
姓名:邓笑游
学号: 01210261y11 成绩:
实验1:8086的微处理器结构(现场)的认识实验
一、实验目的
1、建立自己的DOS平台
2、通过DEBUG工具了解8086的工作现场
3、了解DEBUG工具的A、U、R和T命令
二、预习要点
1、8086的数据现场(CPU的寄存器和存储器的段结构)。

2、8086的寄存器类型、名称和作用。

3、debug工具的作用和特点
三、实验项目
在DOS下利用Debug调试工具完成1+2=3的程序调试
四、实验设备环境
PC机1台,DOS操作系统,Debug调试工具
五、实验方法
在DOS下利用Debug调试工具的R命令查看8086微处理器的现场(数据结构)。

六、实验要求
1、写出R命令的功能。

2、写出8086的当前现场的所有数据部件(寄存器)的名称及作用。

实验1 1.装入本实验程序的本机截图
2.进入DEBUG(直接在桌面打开)
3.执行A命令输入1+2=3的程序
这里写入A命令的功能
4.用U命令查看程序的形态
这里写入U命令的功能
5.用R命令查看当前指令的现场
这里写入R命令的功能
6.执行一条指令,说明指令的现场和指令的功能(本指令改变了那些现场的内
7.执行第二条指令,说明指令的现场及结果的值。

8.实验感受。

南昌航空大学_微机原理与接口技术实验报告(8次)

南昌航空大学_微机原理与接口技术实验报告(8次)

南昌航空大学信息工程学院实验报告课程名称:微机原理与接口技术 _ 学号: _____________ _ 姓名:__________ ____ 指导教师:_周卫民_________________ 成绩:________________________南昌航空大学实验报告课程名称:微机原理实验名称:调试程序DEBUG的使用班级:学生姓名:学号:教师评定:签名:一、实验要求:调试程序DEBUG的使用。

二、实验内容:DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。

在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。

①在DOS提示符下键入:DEBUG ↙(表示回车)Debug执行,屏幕显示提示符“-”,说明计算机当前处于DEBUG的管理之下,可接受、并执行DEBUG命令。

②在DOS提示符下键入:DEBUG [路径\]文件名↙DEBUG执行,并将指定文件装入内存,供调试。

如不指定被调试程序,DEBUG设置所有段寄存器的值相同,并指向最低的、可用的段地址;SP指向本段的尾部;IP指向本段的0100H单元;其它通用寄存器和所有状态标志清0。

如带入的被调试程序扩展名不是.EXE,则BX、CX包含被调试文件长度(字节数,BX为高位),其他同上。

(带入.COM程序同此)如带入的被调试程序扩展名是.EXE,则需要重新定位。

DS=ES指向当前最低的、可用的段地址(PSP的首字节);CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段;BX.CX为文件长度,其它通用寄存器和状态标志清0。

演示:DEBUG的两种启动方法1.命令格式命令字母[参数]字母不分大小写;只使用16进制数,不加H;分割符只在两个数值之间是必须的,命令和参数之间可有可无;键入回车键执行命令,Ctrl+Break或Ctrl+C中止命令的执行;如命令不符合DEBUG的规则,则提示“error”并使用“^”指示错误位置。

微机原理第8次作业

微机原理第8次作业
ORG 2100H
DATA2 DB 100 DUP(?);此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:AX,DATAS
MOV DS,AX
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
XOR SI,SI
XOR CX,CX
XOR DI,DI
LEA SI,DATA1
LEA DI,DATA1
MOV CX,100
CLD
N000:
MOVSB
LOOP N000;此处输入代码段代码
(7)DAA;AL=9AH
(8)INC SI;SI=0009H
(9)MOV [DI],AL;[DI]=94H
(10)XOR AH,BL;AH=84H,BL=04H
(11)JMP DX;CS=3000H,IP=17C6H
3.53在以DS:3301H为首地址的储存单元中,连续存放了50个无符号的字节数据,要求在其中找出最小值并将它放在地址为DS:3300H的字节单元中。试编写程序。
END START
②使用不带重复前缀的穿操作指令
DATAS SEGMENT
ORG 1000H
DATA1 DB 100 DUP(?)
ORG 2100H
DATA2 DB 100 DUP(?);此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理上机4-IO接口
① 练习lab1_io例子,编译,运行,查看仿真状态 开关打开,4个LED亮,并闪烁;开关闭合, 4个LED亮,不闪烁 单步执行,查看8086各寄存器以及其它器件状态,读懂程序


完成上述内容后,修改代码(复制另存),要求:开关闭合时, LED0~7依次循环点亮;开关打开,所有LED同时亮灭闪烁。(参考 6.3.3)

本次练习内容:例5-15 掌握上述例子中出现的命令用法、内存空间数据查看、各寄存器变 化、转移指令用法等
微机原理上机3-测试题
编写一个完整的汇编语言程序,要求对键盘输入的小写 字母用大写字母显示出来。要求:先显示键盘输入的字 符,再显示一个冒号“:”,如果输入的是小写字母则显 示大写字母 ,否则原样输出,然后等待下一个键盘输入 字符;直到输入 “$”,才返回DOS。
掌握调试中常用的DEBUG命令:
D(显示内存单元内容) R(显示寄存器内容) P/T(单步执行) G(运行) Q(退出)

本次练习内容:例5-7、例5-10、例5-11、例5-12 掌握上述例子中出现的命令用法、内存空间数据查看、各寄存器变 化、转移指令用法等
微机原理上机3
② ③ ④
微机原理上机6- 8253应用
① 练习lab3_8253例子,编译,运行,查看仿真状态(参考8.3节 、12.2节、例8-6) 8253输入时钟为1.1932MHz,输出频率为1Hz方波控制 LED的亮灭,使能信号由I/O译码电路给出。 根据电路图,写出8253的计数器0、计数器1和控制端口的地 址,写出控制字、计算初值; 写出8253门控信号(GATE)的译码电路地址; 若门控使能一直有效,完成8253的初始化及其应用编程(程 序基本框架已给出,加入相应初始化及其应用程序段),编 译仿真结果正确。(能看到LED闪烁,以及示波器波形) 若门控使能信号每隔5秒翻转一次,请完成上述程序
微机原理上机5- 8255应用
① 练习lab2_8255例子,编译,运行,查看仿真状态(参考例9-3 和12.3节) 按键按下,数码管显示相应的键值,发光二极管低四位 对应键值的二进制数 单步执行,查看8086各寄存器以及其它器件状态,读懂程序 理解8255控制字、8255初始化步骤以及应用 修改电路: 1)将8255片选端CS连接到IO14, 2)将74154(U7,4-16译码器)的B引脚接到A3地址线, 电路修改完成后计算8255端口地址,并修改相应代码,重新 仿真,能出结果(与第①步相同)。
掌握8086汇编上机调试方法及步骤:
① ② ③ ④ ⑤ 编写汇编源程序(文件名:file.asm) 汇编:MASM file.asm 链接:LINK file.obj 运行:file.exe 调试:DEBUG file.exe
掌握调试中常用的DEBUG命令:
D(显示内存单元内容) R(显示寄存器内容) P/T(单步执行) G(运行) Q(退出)

③ ④

微机原理上机7- 8251应用
练习lab4_8251例子, (参考12.7节、 8.4.4节、例9-10) 利用8251A芯片实现串行数据输出,并用示波器和虚拟串口观察波形和 数据。 ① 根据电路图,写出8251的数据端口和控制端口的地址;
② 要求8251A工作在:异步方式,波特率为19200bps,波特率因子为 1,字符位数8位,1个停止位,无奇偶校验位,复位出错标志,只 允许发送。写出相应的命令字,并完成初始化程序段(需要软件复 位 );
微机原理上机1
掌握8086汇编上机调试方法及步骤:
① ② ③ ④ ⑤ 编写汇编源程序(文件名:file.asm) 汇编:MASM file.asm 链接:LINK file.obj 运行:file.exe 调试:DEBUG file.exe
掌握调试中常用的DEBUG命令:
D(显示内存单元内容) R(显示寄存器内容) P/T(单步执行) G(运行) Q(退出)
ASCII码: 换行符:0AH 回车符:0DH 当屏幕上同4-IO接口
① ② ③ ④ 复制lab1_io.rar文件到D盘根目录,并解压; 点击“程序/Proteus 7 Professional /ISIS Professional”运行Proteus; 点击“file/open design”选择解压后的实验内容“*.DSN”; 点击“Source /Define Code Generation Tools”,在打开的窗口中点击 “New”, 选择D:\masm32\masm32.bat,填上相应扩展名后点“OK” 。 (参考6.3.2和12.1节) ① 点击“Source /Builde All” ② 点击左下角“运行/单步/暂停/停止”进行仿真
③ 要发送的数据存放在STR1开始的内存区域,发送数据个数为 LEN1(已在程序中定义),请编写程序段实现数据的循环发送。 ④ 仿真并运行,观察示波器的波形数据和虚拟串口接收到的字符对 应关系,并理解串行数据帧格式
微机原理上机8- ADC/DAC应用
1、ADC0808应用, (参考13.5节、 11.3.3节) 采样可变电阻端的电压值,利用电压表和数码管观察输出电 压值。 ① 掌握端口地址译码,8255应用,数码管显示原理; ② 掌握ADC0808工作过程,输入电压与输出数字量之间关系; ③ 理解程序; 2、DAC0832应用, (参考13.6节、 11.2.3节) 通过DAC0832产生一个三角波,利用电压表和示波器观察输 出波形。 ① 掌握端口地址译码; ② 掌握DAC0832工作方式,工作原理,输出电压与输入数字量 之间关系; ③ 理解程序,修改延时,查看三角波斜率和周期的变化;

本次练习内容:例5-2、例5-4、例5-5、例5-6 掌握上述例子中出现的命令用法、内存空间数据查看、各寄存器变 化、转移指令用法等
微机原理上机2
掌握8086汇编上机调试方法及步骤:
① ② ③ ④ ⑤ 编写汇编源程序(文件名:file.asm) 汇编:MASM file.asm 链接:LINK file.obj 运行:file.exe 调试:DEBUG file.exe

完成上述内容后,修改电路,将端口地址改成24H,并修改相应代码 ,重新仿真,搞清楚I/O端口译码电路和端口地址之间的对应关系。
微机原理上机4-IO接口
A7 A6 A5 A4 A3 A2 A1 A0
0
0 0
0
0 1
1
1 1
1
0 0
0
0 1
0
1 0
0
0 0
0
0 0
完成上述内容后,修改电路,将端口地址改成68H,并修改相应代码 ,重新仿真,搞清楚I/O端口译码电路和端口地址之间的对应关系。
相关文档
最新文档