微机原理实验指导书 ( 1 )
微机原理实验指导书
实验一初级程序的编写与调试一、实验目的1、熟练掌握的DEBUG常用命令,学会用DEBUG调试程序;2、深入了解数据在存储器中的存取方法,及堆栈中数据的压入与弹出;3、掌握各种寻址方法以及简单指令的执行过程。
二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H—304H连续单元顺序装入0AH、OBH、0CH、0DH、0EH。
在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程。
当每条数据传送完毕时,AX中的内容是什么。
程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3、设AX=0002H,编一个程序段将AX的内容乘10,要求用移位的方法完成。
三、实验要求1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,对程序结果的分析等。
2、本实验要求在PC机上完成。
3、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序,调试程序,执行程序。
4、编程提示:(1)、实验内容1将两个寄存器内容进行交换时,必须有一个中间寄存器才能进行内容的交换。
如果用堆栈作为中间存储单元,必须遵循先进后出的原则。
(2)、实验内容2[1] 其中数据段寄存器中的段地址为进入DEBUG状态后系统自动分配的段地址。
[2] SI和BX的初值可在DEBUG的状态下,用R命令装入,也可以在程序中用指令来完成。
[3] 用T命令执行程序,可进行单步跟踪执行,每执行一条指令就可以看到各寄存器的状态,也可用R命令直接调出寄存器,来检查各寄存器内容是否正确。
微机原理实验学生实验指导书
微型计算机原理实验指导书河北大学电子信息工程学院2017年10月目录实验一系统认识及编程初步实验 (1)实验二输入输出程序设计实验 (7)实验三8255并行接口实验 (9)实验四8259中断控制实验 (13)实验五8254定时/计数器应用实验 (19)实验六综合实验 (24)实验一系统认识及编程初步实验一、实验目的1. 掌握TD系列微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
2. 掌握使用运算类指令编程及调试方法。
3. 学习使用软件监视变量的方法。
二、实验设备PC机一台,TD-PITE实验装置一套。
三、实验内容(一)基础实验1. 系统认识实验编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
2. 运算编程实验80X86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1-1所示的数据类型进行算术运算。
本实验以二进制双精度加法运算为例,计算X+Y=Z,将结果Z存入某存储单元。
表1-1 数据类型算术运算表(二)提高实验1. 在系统认识实验中,编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。
通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。
2. 在运算编程实验中,求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H。
四、实验步骤(一)系统认识实验1. 运行Wmd86软件,进入Wmd86集成开发环境。
2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言和寄存器类型,这里我们设置成“汇编语言”和“16位寄存器”,如图1-1、图1-2所示。
设置选择后,下次再启动软件,语言环境保持这次的修改不变。
图1-1 语言环境设置界面图1-2 寄存器设置界面3. 语言和寄存器选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图1-3所示。
微机原理实验指导书(新版)
微机原理与接口技术实验指导书主编:王青岳陈超波张晓倩许韫韬西安工业大学电信学院软件实验部分 (1)1 汇编基本原理 (2)1.1 程序,可直接运行的程序,汇编源程序,汇编 (2)1.2 CPU取指令、执行指令的过程 (3)2汇编工具MASM5.0使用方法 (3)2.1汇编源程序文件的建立方法 (3)2.2编译阶段 (5)2.3链接阶段 (6)2.4 程序调试阶段 (7)3软件实验项目 (9)软件实验一清零实验 (9)软件实验二码制转换实验 (11)软件实验三数据区移动实验 (13)软件实验四冒泡法排序实验 (16)软件实验五存储器校验实验 (18)软件实验六实时时钟显示实验 (19)硬件实验部分 (21)1 微机实验系统简介 (22)2 实验系统上位机软件使用方法 (23)2.1 软件启动 (23)2.2 如何使用星研集成环境软件 (23)3 硬件实验项目 (32)硬件实验一8255 PA口控制PB口实验 (32)硬件实验二8255控制交通灯实验 (34)硬件实验三74HC138译码器实验 (37)硬件实验四8253方波实验 (39)硬件实验五8259A中断控制器实验 (41)硬件实验六8250可编程通信实验(与微机) (44)硬件实验七简易电子琴实验 (49)硬件实验八LED8 * 8点阵实验 (58)软件实验部分1 汇编基本原理1.1 程序,可直接运行的程序,汇编源程序,汇编程序程序以文件的形式存在,它是由若干条“指令”顺序排列存储构成的。
指令是对符合CPU指令集的所有信息的统称,“指令”在程序中以两种形式存在,一种是以“指令代码”的形式(在可直接运行的程序文件中),另一种是以“助记符”的形式(在汇编源程序文件中)。
无论“可直接运行的程序”还是“汇编源程序”,其中的指令都是以顺序排列的方式存储的,只是指令存在的方式不同。
可直接运行的程序当程序中的指令是以可执行的“指令代码”的形式存在时,该程序即为可直接运行的程序,该程序所在的文件即为“可执行程序文件”。
微机原理实验指导书
实验一 DOS命令与汇编源程序输入、汇编、连接、运行一、实验目的掌握在计算机上运行汇编语言程序的整个操作过程。
学会将自己编制的汇编语言源程序用EDIT编辑程序输入计算机并存盘;学会用MASM 宏汇编程序对汇编语言源程序进行汇编形成二进制目标文件;学会用LINK连接程序对二进制目标文件连接形成可执行文件;学会运行经汇编和连接后形成的可执行文件;学会用DEBUG调试程序运行和调试可执行文件。
二、实验设备1、PC系列不低于80286档次的微型机;2、DOS3.3以上版本的操作系统;3、EDIT,MASM,LINK,DEBUG执行程序。
三、实验步骤1、用EDIT编辑汇编源程序(1)MS-DOS Editor的启动与退出Editor是在DOS系统提示符下启动,其命令格式为:C:EDIT [Path] [filename]在编辑完成后,选择屏幕菜单的File命令(按“ALT+F”键)中的Exit项即可退出Editor。
(2)建立文本文件在MS-DOS Editor的屏幕菜单栏中File命令就是对文本文件的建立、存储和打印的操作。
A.建立文件(New)打开屏幕菜单栏中File下拉菜单,选择New项。
B.编辑文件将写好的汇编语言源程序输入到编辑文本区。
输入时,一行结束后按回车键(Enter)换行。
C.保存文件(Save)打开屏幕菜单栏中File下拉菜单,选择Save项在弹出的对话框中键入文件名。
如果要把文件保存到非默认路径下,则在键入文件名的同时键入路径。
D.打开文件(Open)打开屏幕菜单栏中File下拉菜单,选择Open项。
该窗口中有三个区可以选择要打开的文件:文件名区:可以直接键入要打开的文件名;文件表区:文件表中列出要打开的所有文件名,供用户选择;目录/磁盘区:键入的文件名是哪个磁盘目录中的,在该区中选择。
在Open对话框中用“Tab”或“Shift+Tab”键选择各区。
选完后按“OK”确定。
2.MASM宏汇编程序的使用方法(1)命令格式和功能命令格式:MASM文件名功能:对汇编语言源程序进行汇编形成二进制目标文件(2)操作过程在DOS下,将目录切换到汇编语言所在目录下,然后调入MASM宏汇编程序。
微机原理实验指导书
前言《微型计算机原理及应用》是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题﹑解决问题的能力。
本实验指导书是《微型计算机原理及应用》一书的配套教材。
该实验指导书紧密结合教材内容,使用复旦大学科教仪器厂生产的FD-SJ8088A微机实验系统,合理安排了微机实验。
全书共分二部分。
第一部分汇编语言上机操作及程序调试方法及软件部分实验第二部分FD-SJ8088A微机实验系统介绍及硬件部分实验对于每一个实验都给出了实验目的﹑实验内容﹑预习要求﹑报告要求﹑实验提示﹑思考题。
实验提示部分我们仅给出部分文字提示和参考流程图,以作为学生自己编程时的参考。
我们主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的结果。
这样做实验,才能真正有收获,才能真正提高分析问题和解决问题的能力。
本实验指导书在编写的过程中,得到了本系的领导和老师的支持﹑指导和帮助,在此表示衷心的谢意。
由于编者水平有限,书中不妥或错误之处在所难免,欢迎大家在使用中提出宝贵意见。
编者2005年8月目录实验须知 (3)第一部分汇编语言上机操作及软件部分实验实验一汇编语言上机环境的熟悉和命令使用 (4)实验二利用D E B U G命令调试程序 (7)实验三利用中断指令进行输入输出程序设计 (9)实验四汇编语言综合编程实验 (11)第二部分硬件部分实验FD88调试软件 (12)实验五简单I/O接口控制实验 (21)实验六 8255 接口控制实验 (21)实验须知一、预习要求1.实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好源程序,并对调试过程、实验结果进行预测。
微机原理实验指导书
实验一数据传送一、实验目的1、熟悉SH51仿真器的使用方法。
2、练习设计简单的程序。
3、掌握8031片内RAM和片外RAM的数据传送的方法,从而了解这两部分存储器的特点二、实验设备和器件PC一台、DP-51PROC单片机实验仪一台、仿真器一台。
三、实验内容将8031内容RAM40H—4FH置初值00H—0FH,然后将40H—4FH 的内容传送到外RAM4800H—480FH,再将4800H—480FH传回到内部RAM50H—5FH。
设置断点B1、B2、B3,每运行到断点时检查相应的CPU现场和存储单元的内容。
四、实验步骤1、向机器输入程序2、运行程序至第一个断点B1,检查内容RAM40H—4FH单元的内容及累加器A 的内容;3、运行程序至第二个断点B2,检查RAM4800H—480FH单元的内容及累加器A、数据指针DPTR的内容;4、运行程序至第三个断点B3,检查内容RAM50H—5FH单元的内容及累加器A、数据指针DPTR的内容;五、实验程序ORG 0000HSTART: LJMP MAINORG 0040HMAIN: MOV R0, #40HMOV R2, #10HCLR AA1: MOV @R0, AINC R0INC ADJNZ R2, A1 B1: MOV R0, #40HMOV DPTR, #4800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2, A2B2: MOV R0, #50HMOV DPTR, #4800HMOV R2, #10HA3: MOVX A, @DPTRMOV @R0, AINC R0INC DPTRDJNZ R2, A3B3: SJMP $END实验二并行口一、实验目的:通过实验了解8031并口输入方式和输出方式的工作原理和编程方法。
二、实验设备及器件:PC一台、DP-51PROC单片机实验仪一台、仿真器一台。
微机原理与汇编实验指导书(第一次)
微机原理与汇编语言程序设计实验指导书计算机与信息工程系 Copyright © 2006.03目录上机实验环境 (1)实验一、寄存器与存储器 (2)实验二、DEBUG调试程序 (6)实验三、源程序建立与汇编 (9)实验四、顺序程序设计 (13)实验五、分支程序设计 (15)实验六、循环程序设计 (17)实验七、子程序设计 (19)实验八、中断调用程序设计 (21)实验九、宏汇编程序设计 (23)实验十、模块化程序设计 (25)实验十一、与C语言混合编程 (26)上机实验环境【硬件环境】目前8086汇编语言程序一般在IMB PC/XT及兼容机上运行,因此要求机器具备基本配置的IMB PC/XT及兼容机就可以了,对机器的硬件环境没有特殊的要求。
【软件环境】1. 操作系统:MS-DOS2. 源程序编辑程序:纯文本编辑器,如:EDIT、EDLIN、记事本等3. 汇编程序:MASM5.0、TASM3.0以上。
4. 连接程序:LINK5. 调试程序:DEBUG实验一、寄存器与存储器【实验目的】初步认识调试程序DEBUG,掌握调试程序时常用的命令与操作。
【实验内容】1. 调试程序DEBUG的启动与退出。
2. 显示与修改寄存器的内容。
3. 显示与修改存储器的内容。
【实验准备】1. 复习计算机中数据的表示。
2. 复习8086CPU内部结构,特别是8086CPU中的寄存器。
3. 复习8086CPU存储器组织,存储器的分段、逻辑地址、物理地址等概念。
4. 复习汇编语言程序上机过程,特别是DEBUG命令。
【实验步骤】1. 调试程序DEBUG的启动与退出。
1) 启动DEBUG:在DOS提示符下键入:DEBUG↵。
进入后显示DEBUG 提示符‘-’,如下图:2) DEBUG帮助:在DEBUG提示符下键入:?↵。
DEBUG会列出所有命令及使用方法简单提示,如下图:3) 十六进制数加减法:在DEBUG提示符下键入:H 1234 ABCD↵。
微机原理实验指导书_智能
实验一系统认识、数码转换、运算编程实验一、实验目的1.掌握TDN86/88教学系统的基本操作。
2.学习数码转换的程序设计方法;3.学习运算编程方法。
二、实验设备1.PC机一台;2.TDN86/88教学实验系统一台。
三、实验内容及步骤1.系统认识实验从3500H内存单元开始建立0-15共16个数据。
实验程序如下:STACK1 SEGMENT STACK ;8088 宏汇编程序DW 64 DUP(?) ;定义堆栈段STACK1 ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODESTART: MOV DI,3500H ;程序开始设数据区首址MOV CX,0010H ;字节数送入CX中MOV AX,0000HA1: MOV [DI],AL ;写入一字节INC DI ;修改地址指针INC AX ;修改数据DAA ;十进制调整LOOP A1 ;未填完转移A2: JMP A2CODE ENDS ;代码段结束END START ;程序结束实验步骤(1)启动Wmd86联机软件Wmd86联机软件的启动方式有两种,可以在【开始】/【程序】/【TangDu】菜单中单击“Wmd86”的程序组启动,也可以直接双击桌面上的“Wmd86”快捷键启动该程序组。
启动应用程序进入主界面窗口后,应显示“串口通讯成功”小窗口,若显示“串口通讯不成功”,说明上位机和下位机的连接不正常或下位机死机,请确认下位机电源已经打开,串口线两端接触良好。
(2)输入源程序,检查无误后存盘。
(3)对源程序进行编译、链接和加载,可以使用编译菜单项,也可以使用编译工具栏。
(4)运行程序,观察结果。
连续运行程序,在输出区中的调试区用DEBUG命令观察运行结果,即键入D0000:3500 ↙,可查看3500H-350FH单元中的内容是否为0-15共16个数。
注意,因本程序的结尾为死循环,应在程序运行后停止运行再观察结果。
(5)熟悉系统提供的单步运行、断点运行等功能,可以使用调试菜单项,也可以使用调试工具栏。
微机原理实验指导书-硬件部分(2015)(1)
实验1 存储器读写实验一、实验目的1.掌握PC机外存扩展的方法。
2.熟悉6264芯片的接口方法。
3.掌握8086十六位数据存储的方法。
二、实验设备微机实验箱、8086CPU模块。
三、实验内容向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。
四、实验原理介绍本实验用到存储器电路五、实验步骤和要求1、实验接线:本实验无需接线。
2、编写调试程序3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。
本实验的主要目的是学会用使用工具软件,掌握用单步执行和断点方式运行程序,观察寄存器和内存中的数据变化等程序调试的手段。
六、实验提示1、RAM区的地址为02000H,编程时可将段地址设为0100H,则偏移地址为1000H。
2、如果按字节进行存储,则AL为55H或AAH;如果按字进行存储,则AX应为55AAH。
3、6264、62256等是计算机系统扩展中经常用到的随机存储器芯片(RAM),主要用作数据存储器扩展。
本实验所进行的内存置数在程序中经常用到。
计算机系统运行中会频繁地进行内存与外设或者内存与内存之间的数据传输,所以本实验虽然简单但对理解系统程序的运行很关键,望学习和实验时认真对待。
七、实验范例程序框图及源代码(实验程序名:RAM.ASM)八、思考题1、单步执行到“intram”标号的语句时,ds寄存器的数据是什么?采用断点方式运行时执行到第一个断点处,2000H~202FH内存单元的数据是什么?执行到第二个断点处,2000H~200FH内存单元的数据是什么?并根据观察结果和对源程序的判读简述源程序的运行效果。
如图,单步执行到“intram”标号的语句时ds寄存器的数据为0100采用断点方式运行时执行到第一个断点处,2000H~202FH内存单元的数据如图所示。
由源程序知道第一个断点前的程序是为了把数据段内存单元清0,符合上图结果其实清零在这里可以不用,直接进行后面的置数执行到第二个断点处,2000H~200FH内存单元的数据如图所示。
微机原理试验指导书
《微型计算机原理》实验指导书上海行知学院计算机系二零零六年五月实验一DEBUG 调试指令的认识实验一、实验目的(1)熟悉 DEBUG的调试命令和 DEBUG的调试指令的使用方法(2)掌握各种寻址方式和指令的功能二、实验内容1、已知:(DS)=3000H、(ES)=3500H、(SS) =4000H、(BX)=0038H 、(BP)=0019H 、(SI) =0012H、(3005AH)=56H、(3005BH)=78H、(30068H)=11H、(30069H)=22H、(32000H)=12H、(32000H)=34H、( 35038H) =0AAH、( 35039H) =0BBH、( 4002BH) =88H、( 4002BH) =99H。
分别下列指令, 请说明其源操作数的寻址方式、有效地址和物理地址,以及AX寄存器中的内容。
(1)MOV AL,2000H(2)MOV AX , [2000H](3)MOV AX,BX(4) MOV AL , ES: [BX](5)MOV AX , 30H[BX](6)MOV AX , [BP][SI](7)MOV AL,10H[BX][SI](8)MOV DX , ES: [BX](9) MOV AL,ES:[BX]2、已知: (SS)= 2200H,(SP)=0010H,(DX)=ABCDH,(CX)=5678H执行下列指令段:PUSHDXPOPCX请说明 DX、CX以及 SP寄存器中的内容,用T 命令跟踪,观察执行结果3、已知:(BX) =82A8H、( AX) =9FA3H执行面这指令,求 AX寄存器及 CF, SF, ZF 和 OF 的内容是什么?ADD AX,BX4、假设( DX) =97B5H,确定下列各条指令单独执行后的结果。
(1) AND DX, 0F54H(2) XOR DX, 0FFFFH三、实验要求(1)掌握 DEBUG的调试 R 、 A、 U、 D、 E、T 命令使用方法(2)掌握数据传送、算术和逻辑运算指令的功能四、实验步骤1、首先进入DEBUG状态,用R 命令修改各寄存器的内容,以满足题目的要求。
微机原理实验指导书 (1)
实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。
2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。
系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。
4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。
程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。
注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。
输入程序后可通过反汇编查看程序。
(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。
可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。
(分别参考前)。
④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。
微机原理实验指导书
微机原理实验指导书实验一数据传送实验目的 :1. 熟悉 8086 指令系统的数据传送指令及 8086 的寻址方式。
2. 利用 Turbo Debugger 调试工具来调试汇编语言程序。
实验任务 :1.通过下述程序段的输入和执行来熟悉Turbo Debugger 的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOV BL , 08HMOV CL , BLMOV AX , 03FFHMOV BX , AXMOV DS : [0020H] , BX2.用以下程序段将一组数据压入( PUSH )堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOV AX , 0102HMOV BX , 0304HMOV CX , 0506HMOV DX , 0708HPUSH AXPUSH BXPUSH CXPUSH DX出栈程序段请自行编写(用不同的出栈顺序)。
.3. 指出下列指令的错误并加以改正,上机验证之。
(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 , 2000H4. 设置各寄存器及存储单元的内容如下:(BX) = 0010H , (SI) = 0001H(10010H) = 12H , (10011H) = 34H , (10012H) = 56H ,(10013H) =78H (10120H) =0ABH ,(10121H) =0CDH ,(10122H) = 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]5. 将 DS : 1000H 字节存储单元中的内容送到 DS : 2020H 单元中存放。
微机原理实验指导书(注释版修正版)-1
微机原理实验指导书(版本0.1)余有灵副教授控制科学与工程系2007年11月13日说明本实验指导书是依据西安唐都科教仪器公司的产品手册编制,在实验中心相关领导和实验工作人员的帮助下完成的,在此表示感谢。
实验一 显示程序实验1. 实验目的(1) 掌握在PC 机上以十六进制形式显示数据的方法。
(2) 掌握部分DOS 功能调用使用方法。
(3) 熟悉Tddebug 调试环境和Turbo Debugger 的使用。
2. 实验设备PC 微机一台。
3. 实验内容及说明一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS 功能调用完成一些提示信息的显示。
实验中可使用DOS 功能调用(INT 21H )。
(1) 显示单个字符输出 入口:AH=02H 调用参数:DL=输出字符 (2) 显示字符串 入口:AH=09H 调用参数:DS:DX=串地址,’$(3) 键盘输入并回显 入口:AH=01H 返回参数:AL=输出字符 (4) 返回DOS 系统入口:AH=4CH调用参数:AL=返回码4. 实验步骤(1) 运行Tddebug 软件,选择Edit 菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图2-1-1示。
(2) 使用Compile 菜单中的Compile 和Link 对实验程序进行汇编、连接。
(3) 使用Rmrun 菜单中的Run ,运行程序,观察运行结果。
(4) 使用Rmrun 菜单中的Debug ,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。
(5) 更改数据区中的数据,考察程序的正确性。
图1 显示程序实验流程图5. 参考程序清单;显示程序实验STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENT MES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$' MES1 DB 'Show a as hex:',0AH,0DH,'$' SD DB'a'16位段模式DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXMOV ;显示退出提示MOV AH,09HINT 21HMOV DX,OFFSET MES1 ;show messageMOV AH,09HINT 21HMOV SI,OFFSET SDMOV AL,DS:[SI]AND AL,0F0H;取高4位SHR AL,4CMP AL,0AH ;是否是A 以上的数JB C2ADD AL,07H C2:ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07H C3:ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HKEY:MOV AH,1 ;判断是否有按键按下?INT 16HJZ KEY C2也是一个标号,可以用跳转循环指令直接跳到这个标号所在的代码行执行MOV AX,4C00H ;go back to dosINT 21HCODE ENDSEND START。
微机原理实验指导书
微型计算机原理与应用实验指导书上海大学通信学院2010 年4 月PC微机原理实验一一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的功能。
二、要求:在PC机上完成下列程序的调试运行,并写出运行结果。
1.DEBUG的基本操作:(详细内容请参阅教材“程序的调试,P173”和“附录F调试程序DEUBG的使用,P499”)(1)从WINDOWS进入DOS之后,输入命令启动DEBUG:C:>DEBUG 回车(2)输入R命令,查看和记录CPU各个寄存器的内容:-R回车看到什么(3)输入A命令,汇编下面的字符“WINDOWS”显示程序:-A100 ;从偏移地址是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代表什么(5)输入G命令连续运行上面的程序,记录运行结果:-G=100(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=100(9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各命令的运行结果:-T=100 回车-G=100 106 回车-G=100 10A 回车-G=100 10E 回车-G=100 11E 回车注意:下面第2—第8段程序是7个实用的小程序,若不小心打错指令,可以这样修改:例如:CS:0100 B300 MOV BL,00102 53 PUSH BX0103 B220 LP1: MOV DL,20要修改“PUSH BX”,因为这条指令的IP是0102,所以按以下操作:-A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。
微机原理实验指导书
四. 实验任务4.1实验一按键检测和LED显示1.实验目的(1)掌握STM32的I/O模块的使用;(2)理解独立按键检测和阵列按键检测原理,编程并实现按键检测功能;(3)理解八段数码管显示原理,编程并实现数码管的显示;(4)熟悉JTAG调试工具和调试技术。
2.重点、难点重点:按键检测及数码管显示的实现。
难点:按键去抖技术、在线调试技术。
3.作业及课外学习要求课前预习,撰写预习报告,课后书写实验报告。
4.实验原理单微处理器与外部芯片或设备最常见的交互,就是通过对I/O口的操作实现的。
无论MCU对外界进行何种数字控制,或接受外部的何种数字控制,都可以通过I/O口进行。
键盘、LED、等外设都是通过I/O口的输入、输出来进行读取或控制的。
LED显示电路如下。
1/ 15(1) 独立按键检测原理图4.1 按键检测基础知识本实验箱用的按键为弹性按键,存在按下和弹起的抖动问题,可通过延时去抖法实现按键检测。
如图4.1中的流程图所示。
实验例程参见“实验一_IAR_GPIO_独立按键测试”。
本实验箱独立按键和独立LED 的硬件定义如下:#define LED0(x) GPIO_WriteBit(GPIOA, GPIO_Pin_8, x)#define LED1(x) GPIO_WriteBit(GPIOC, GPIO_Pin_9, x)#define LED2(x) GPIO_WriteBit(GPIOC, GPIO_Pin_8, x)#define LED3(x) GPIO_WriteBit(GPIOC, GPIO_Pin_7, x)#define LED4(x) GPIO_WriteBit(GPIOC, GPIO_Pin_6, x)#define LED5(x) GPIO_WriteBit(GPIOG, GPIO_Pin_7, x)#define LED6(x) GPIO_WriteBit(GPIOG, GPIO_Pin_6, x)#define LED7(x) GPIO_WriteBit(GPIOB, GPIO_Pin_0, x)#define KEY0 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_8)//读取按键0#define KEY1 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_9)//读取按键1#define KEY2 GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_10)//读取按键2#define KEY3 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0)//读取按键3F8F9F10FC0MCUSTM32F103ZCT6(2) 阵列按键检测原理在MCU系统中键盘中按钮数量较多时,为了减少I/O口的占用,常常将按钮排列成矩阵形式,如下图4.2所示。
微机原理实验指导书1_2_4_5
微机原理实验指导书郑州大学电气工程学院目录实验一比较字符串实验 (1)实验二两个多位十进制数相加的实验 (14)实验三两个数相乘的实验 (18)实验四键盘输入并显示实验 (21)实验五统计学生成绩 (25)实验六 8259A 中断控制器实验 (29)实验七 8253计数器/定时器实验 (34)实验八 8255并行接口实验 (37)实验九 8251A 串行接口实验 (43)实验十 A/D 实验 (51)附录一调试程序DEBUG (51)附录二汇编程序出错信息 (59)实验一比较字符串实验一.实验目的1.掌握分支程序的设计方法。
2.熟悉在PC机上建立、汇编、链接、调试和运行8086汇编程序的过程。
二.实验内容1.比较两个字符串STRING1和STRING2所含的字符是否相同,若相同则显示‘Match’,否则显示‘No Match’。
2.修改程序,显示所比较字符的个数。
三.程序清单DATAREA SEGMENTSTRING1 DB 'Move the cursor backward.'STRING2 DB 'Move the cursor backward.'MESS1 DB 'Match.',13,10,'$'MESS2 DB 'No match.',13,10,'$'DATAREA ENDSPROGNAM SEGMENTMAIN PROC FARASSUME CS:PROGNAM,DS:DATAREA,ES:DATAREASTART: PUSH DSSUB AX,AXPUSH AXMOV AX,DATAREAMOV DS,AXMOV ES,AXLEA SI,STRING1LEA DI,STRING2CLDMOV CX,STRING2-STRING1REPZ CMPSB?LEA DX,MESS2?MATCH: LEA DX,MESS1DISP: MOV AH,09HINT 21HRETMAIN ENDPPROGNAM ENDSEND START四.实验方法1.用编辑程序EDIT.EXE建立源文件EDIT D101-1.ASM↙在编辑状态下输入源程序,存盘后退出编辑状态。
微机原理实验指导书 ( 1 )
实验一基本程序编程和程序调试一、实验目的1、掌握数码转换等基本程序设计的技巧和方法。
2、熟悉DEBUG命令。
3、学会和掌握用DEBUG调试程序的方法。
二、实验设备PC机一台,装有DOS基本系统三、实验内容及步骤用DEBUG建立、汇编和运行调试程序的操作。
DEBUG是DOS系统支持的用于汇编语言源程序调试的系统软件。
它共有19条命令完成相应的功能,命令及其格式可参阅附录一。
(一)DEBUG操作练习1)实验调试程序程序的功能是从3500H内存单元开始建立0-15共16个数据。
程序如下:地址(H)机器码(H)助记符2000 BF0035 MOV DI,35002003 B91000 MOV CX,00102006 B80000 MOV AX,00002009 9E SAHF200A 8805 MOV BYTE[DI],AL200C 47 INC DI200D 40 INC AX200E 27 DAA200F E2F9 LOOP 200A2011 F4 HLT2)实验步骤:(1)输入与修改①启动DOS,在DOS提示符下输入D E B U G后回车,屏幕立即显示DEBUG提示符“—”,表明已进入DEBUG状态,可以执行DEBUG的各种命令。
②用DEBUG中的汇编命令“A 地址”将程序建立在内存单元中。
在提示符“—”下键入:“A 2000 ↵”此时显示器上将会显示程序的段地址CS和偏移地址IP,你就可以输入以上的程序了。
即显示169C :2000 键入MOV DI,3500169C:2003 MOV CX,0010169C:2011 HLT:::③用反汇编命令“U 地址”检查程序在提示符“—”下,键入“U 2000↵”,将从2000内存单元开始的内容反汇编,屏幕上显示169C:2000 BF0035 MOV DI,3500169C:2003 B91000 MOV CX,0010169C:2006 B8000 MOV AX,0000::::::169C:2011 F4 HLT当发现程序有错时,可用汇编命令“A 地址”进行修改,如要修改200A单元中的指令,则键入“A 200A↵”,屏幕显示169C:200A ,然后再键入MOV BYTE[DI],AL↵,就把错误的程序改正了。
00-微机原理实验指导书-编
00-微机原理实验指导书-编实验⼀ Emu8086 软件的使⽤⼀、实验⽬的:(1)熟悉汇编语⾔开发环境。
(2)掌握Emu8086 软件使⽤⽅法。
(3)了解汇编语⾔的程序结构、调试⼀个简单的程序。
(4)理解寻址⽅式的意义。
⼆、实验内容及要求:1、Emu8086的使⽤(1)打开桌⾯上的Emu8086 的图标,出现如图所⽰的对话框,选择【继续……】⾸次打开软件,界⾯中默认已有⼀段⼩程序。
该程序实现在屏幕上显⽰三段字符串的功能。
若⽤户需要⾃⼰重新编程,可点击⼯具栏的【新建】图标,出现如图所⽰的对话框,选择编程所采⽤的模板。
选择不同的模板,在程序源代码中会出现如下标记:●#MAKE_COM# 选择COM 模板●#MAKE_BIN# 选择BIN 模板●#MAKE_EXE# 选择EXE 模板●#MAKE_BOOT# 选择BOOT 模板#MAKE_COM#最古⽼的⼀个最简单的可执⾏⽂件格式。
采⽤此格式,源代码应该在100H 后加载(即:源代码之前应有ORG 100H)。
从⽂件的第⼀个字节开始执⾏。
⽀持DOS 和Windows 命令提⽰符。
#MAKE_EXE#⼀种更先进的可执⾏⽂件格式。
源程序代码的规模不限,源代码的分段也不限,但程序中必须包含堆栈段的定义。
您可以选择从新建菜单中的EXE 模板创建⼀个简单的EXE 程序有明确的数据段,堆栈段和代码段的定义。
程序员在源代码中定义程序的⼊⼝点(即开始执⾏的位置),该格式⽀持DOS 和Windows 命令提⽰符。
这两种模板是最常⽤的模板(2)选择COM 模板,点击【确定】,软件出现源代码编辑器的界⾯,如图所⽰:在源代码编辑器的空⽩区域,编写如下⼀段⼩程序:DATA SEGMENTBUF DB 82H,62HDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV DS, DATAMOV AL, BUFSUB AL, BUF+1MOV BUF, ALMOV AH, 4CHINT 21HCODE ENDSEND START代码编写结束,点击菜单【⽂件】【另存为……】,将源代码保存为***.ASM,注意在另存的时候⼀定要存后缀名为asm。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一基本程序编程和程序调试一、实验目的1、掌握数码转换等基本程序设计的技巧和方法。
2、熟悉DEBUG命令。
3、学会和掌握用DEBUG调试程序的方法。
二、实验设备PC机一台,装有DOS基本系统三、实验内容及步骤用DEBUG建立、汇编和运行调试程序的操作。
DEBUG是DOS系统支持的用于汇编语言源程序调试的系统软件。
它共有19条命令完成相应的功能,命令及其格式可参阅附录一。
(一)DEBUG操作练习1)实验调试程序程序的功能是从3500H内存单元开始建立0-15共16个数据。
程序如下:地址(H)机器码(H)助记符2000 BF0035 MOV DI,35002003 B91000 MOV CX,00102006 B80000 MOV AX,00002009 9E SAHF200A 8805 MOV BYTE[DI],AL200C 47 INC DI200D 40 INC AX200E 27 DAA200F E2F9 LOOP 200A2011 F4 HLT2)实验步骤:(1)输入与修改①启动DOS,在DOS提示符下输入D E B U G后回车,屏幕立即显示DEBUG提示符“—”,表明已进入DEBUG状态,可以执行DEBUG的各种命令。
②用DEBUG中的汇编命令“A 地址”将程序建立在内存单元中。
在提示符“—”下键入:“A 2000 ↵”此时显示器上将会显示程序的段地址CS和偏移地址IP,你就可以输入以上的程序了。
即显示169C :2000 键入MOV DI,3500169C:2003 MOV CX,0010169C:2011 HLT:::③用反汇编命令“U 地址”检查程序在提示符“—”下,键入“U 2000↵”,将从2000内存单元开始的内容反汇编,屏幕上显示169C:2000 BF0035 MOV DI,3500169C:2003 B91000 MOV CX,0010169C:2006 B8000 MOV AX,0000::::::169C:2011 F4 HLT当发现程序有错时,可用汇编命令“A 地址”进行修改,如要修改200A单元中的指令,则键入“A 200A↵”,屏幕显示169C:200A ,然后再键入MOV BYTE[DI],AL↵,就把错误的程序改正了。
(2)显示和修改数据①用修改内存单元命令“E 地址”在指定内存单元中存入一个数。
如要在3500为首址的单元中存入14H和25H两个数据,可在提示符“—”下,键入:“3500↵”显示169C:3500 ××.键入14,按空格键××.25,按空格键②用显示内存命令“D 地址”检查指定单元的内容在提示符“—”下,键入“D3500↵”显示1489:3500 14 25 48 02 …………1489:3510 ** ** ** ** …………::::1489:3570 ** ** ** ** …………若某单元内容有错则可用命令:“E 地址”进行修正。
③用显示和修改命令“R ”或“R 寄存器名”显示寄存器或修改其内容在提示符“—”下,键入“R↵”显示AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE……………………DS=169C ES=169C SS=169C CS=169C IP=2000……………………… 要修改IP 的内容时,键入命令 “R IP ”后, 显示 IP 2000,在2000之后键入新内容。
(3)程序运行程序的运行方式有单步运行、断点运行和连续运行几种方式。
①单步运行输入DEBUG 跟踪命令“T ”或“T=地址”或“T=地址 指定次数”,可从指定地址处运行该单元中的一条指令,以后只要连续输入“T ”命令就能连续执行一条一条指令。
如在提示符“—”下,键入 “T=2000 ↵” 显示 :AX=0000 BX=0000 CX=001D DX-0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=169C ES=169C SS=169C CS=169C IP=2000 NV ……… 169C :2003 B91000 MOV CX , 0010②断点运行用运行命令 “G=地址 地址断点 地址断点…”执行指定地址的程序 在提示符“—”下,键入 “G=2000 2011 ↵”显示 169C :2011 F4 HLT 表示这段程序已经执行完毕。
③连续运行输入DEBUG 命令“G=地址”,执行指定地址的程序 (4)用显示内存命令检查运行结果在提示符“—”下,键入命令 “D 地址↵”,根据其中的内容判断程序运行是否正确。
如检查以上程序执行后的结果,在提示符“—”下,键入“ D 3500↵”,可显示 169C :3500 00 01 02 03 04 …… 15 169C :3510(二)数码转换程序及其调试1、 将ASCII 码表示的十进制数转换为二进制数1)程序设计的算法及其程序 十进制数据可表示为:D I 代表十进制数1,2,3,…9,0 上式可转换为:由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn 开始乘10加次位的操)(110⨯=10⨯+⋯+10⨯+10⨯∑0=001-1-ini i n n n n D D D D )())))((2+10⨯+⋯+10⨯+10⨯+10⨯⋯=10⨯012-1-0=∑D D D D D D n n n ini i (作,将结果再乘10再加下一次位,如此重复,则可求出二进制数结果来。
程序流程及参考程序如图1-1。
这里我们规定:被转换的ASCII码十进制数存放在3500H——3504H单位中。
而转换结果存放在3510H——3511H单元中。
2)实验步骤(1)输入程序并检查无误。
(2)在3500H——3504H单元存入十进制数12的ASCII码,即E3500H↙,并输入3030303132H。
(3)G=2000↙,运行程序,并用CTRL+C来中断程序返回监控状态。
(4)用D3510↙来查看结果,应为:3510 0C 00(5)反复试几组数,考查程序的正确性。
地址(H)助记符注释2000 MOV SI,3500 ;源地址2003 MOV DI,3510 ;结果地址2006 MOV BX,000A ;乘数 102009 MOV CX,0004 ;计数200C MOV AH,00 ;AH 清零200E MOV AL,[SI] ;取被转换数2010 SUB AL,30 ;ASCII码变十进制数2012 IMUL BX ;高位(AX)*(BX)送AX2014 ADD AL,[SI+01] ;取下一位1017 SUB AL,30 ;ASCII码减30变十进制数2019 INC SI ;源地址指针+1201A LOOP 2012 ;CX-1,若CX不等于零则继续201C MOV [DI],AX ;若CX不等于零则存结果201E INT 3图1-12将十进制数的ASCII码转换为BCD码1)程序流程和程序设从键盘输入的五位十进制数的ASCII码已存放在3500H起始的内存单元内,把它转换成BCD 码后,再按位分别存入350AH起始的内存单元内。
若输入的不是十进制数的ASCII码,则对应存放结果的内容为“FF”。
一字节ASCII码取其低四位即变为BCD码,程序流程图及考程序如图1-2所示。
2)实验步骤(1)输入程序并检查无误。
(2)在3500H——3504H单元中存入五位十进制数的ASCII码,即E3500↙,并输入31,32,33,34,35。
(3)G=2000↙,运行以上程序。
(4)D350A↙,显示结果为:0000:350A 01 02 03 04 05 CC … (5) 反复试几组数,考查程序的正确性。
地址(H ) 助记符 注释2000 MOV CX ,0005;循环计数器赋初值 2003 MOV DI ,3500;ASCII 码首址 2006 MOV BL ,FF ; 错误标志送BL 2008 MOV AL ,[DI];送ASCII 码至AL 200A CMP AL ,3A ; 比较AL 与3AH200C JNB 2014; 不低于3A 则转2014200E SUB AL ,30; 低于3A 则取ASCII 码的低四位 2010 JB 2014; 低于30则转20142012 MOV BL ,AL ; 否则AL 内容送BL ,取代FF 2014 MOV AL ,BL ; 结果或错误标志送AL 2016 MOV [DI+0A],AL 2019 INC DI 201A LOOP 2006 201C INT 3图1-23 将十六位二进制数转换为ASCII 码表示的十进制数1)程序及其流程十六位二进制数的值域为0——65535,最大可转换为五位十进制数。
算法:五位十进制数可表示为:Di:表示十进制数0——9。
因此,将十六位二进制数转换为五位ASCII 码表示表示的十进制数,就是求D 1——D 4,并将它化为ASCII 码。
程序流程图如图1-3所示,设源数据存于3500——3501H 单元中,结果数存于3510——3514H 单元中。
2)实验步骤(1) 输入程序并检查无误。
(2) 在3500——3501H 单元中存放0C00,运行程序并检查结果,应看到3510——3514H 单元中的数依次为3030303132。
(3) 反复试几组数,并运行程序、观察结果。
1223344+10⨯+10⨯+10⨯+10⨯=D D D D D N D地址(H)助记符注释2000 MOV DX,[3500];取二进制数2004 MOV SI,3515;目标首址在35102007 DEC SI2008 MOV AX,DX200A MOV DX,0000200D MOV CX,000A2010 DIV CX; ;除102012 XCHG AX,DX2014 ADD AL,302016 MOV [SI],AL2018 CMP DX,0000201B JNE 2007201D CMP SI,3510 ; 填余下高位为02021 JZ 202A;2023 DEC SI2024 MOV AL,302026 MOV [SI],AL2028 JMP 201D202A INT 3图1-34、十六进制数转换为ASCII码1)程序及其流程经过CPU处理后的十六进制数存放在起始地址为3500H的内存单元中,把它们转换成ASCII 码之后,再分别存入起始地址为350AH的内存单元中。
从表2-1中可知,十六进制数加30H即可得到0H——9H的ASCII码,而要得到AH——FH的ASCII码,则需再加7H。
程序流程图及参考程序如图1-4所示。