微机原理课程上机实验指导书
微机原理实验指导书
实验一初级程序的编写与调试一、实验目的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命令直接调出寄存器,来检查各寄存器内容是否正确。
微机原理课程上机实验内容
该课程在微机房实验共分为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的功能及特点。
微机原理实验指导书(软件)
实验一系统认识与数码转换实验一、实验目的1.学习汇编语言的开发过程。
2.熟练掌握DEBUG调试程序。
参考书后附录E二、实验设备PC机一台三、实验内容及步骤1.系统认识实验在内存缓冲区BUFF中存储0-F共16个字节数据,实验参考程序如下:DATA SEGMENTBUFF DB 16 DUP (?);定义数据段DATA ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DI,OFFSET BUFF ;设置缓冲区首址MOV CX,16 ;字节数送入CX中MOV AL,0A1: MOV [DI],AL ;写入一字节INC DI ;修改地址指针INC AL ;修改数据LOOP A1 ;未填完循环MOV AH,4CHINT 21HCODE ENDS ;代码段结束END START ;程序结束实验步骤:(1)把实验用的相关软件拷贝到PC机中,比如D盘的HUIBIAN文件夹(D:\HUIBIAN)。
(2)进入DOS环境(开始\程序\附件\‘C:\命令提示符’),进入路径D:\HUIBIAN。
(3)编辑,启动编辑软件EDIT,输入源程序,检查无误后存盘,如文件名11.ASM。
(4)汇编,即键入MASM 11.ASM回车,通过后应生成文件11.OBJ。
(5)连接,即键入LINK 11.OBJ回车,通过后应生成文件11.EXE。
(6)调试,即键入DEBUG 11.EXE,进入调试软件DEBUG来调试源程序。
DEBUG的用法可参考教材的附录E。
(7)运行程序,观察结果是否正确。
2.数码转换实验将十进制数的ASCⅡ码转换为BCD码。
设五位十进制数的ASCⅡ码已存放在内存缓冲区BUF1中,转换为 BCD 码后,再分别存入内存缓冲区BUF2中。
提示:一字节ASCⅡ码取其低四位即变为BCD码。
实验程序如下:DATA SEGMENTBUF1 DB 31H,32H,33H,34H,35H ;定义数据段BUF2 DB 5 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX, 5 ;循环计数器赋初值MOV SI,OFFSET BUF1 ;ASCⅡ码首址MOV DI,OFFSET BUF2 ;BCD码首址A1: MOV AL,[SI] ;送ASCⅡ码至ALCMP AL,3AH ;比较AL与3AJAE A2 ;大于3A则转A2SUB AL,30H ;小于3A则取ASCⅡ码低4位JB A2 ;小于30则转A2MOV [DI],AL ;保存结果A2: INC SIINC DILOOP A1MOV AH,4CHINT 21HCODE ENDSEND START实验步骤(1)输入源程序,进行汇编、连接。
微机原理上机指导书
姓名:_________________ 学号:_________________ 专业:_________________日期:_________________目录实验1 DEBUG命令的应用 (2)实验2 汇编语言程序上机过程 (12)实验3 分支程序实验 (15)实验4 循环程序实验 (18)实验5 子程序实验 (19)实验6 字符处理程序实验 (23)实验7 排序程序设计 (27)实验8 计算机钢琴程序 (29)实验9 键盘和窗口程序 (31)实验10 磁盘文件操作程序 (34)实验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命令汇编程序能根据转移目标地址的距离自动地汇编出短、近或远的转移或调用指令。
微机原理实验指导书
前言《微型计算机原理及应用》是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题﹑解决问题的能力。
本实验指导书是《微型计算机原理及应用》一书的配套教材。
该实验指导书紧密结合教材内容,使用复旦大学科教仪器厂生产的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单片机实验仪一台、仿真器一台。
微机原理实验指导书 ( 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↵,就把错误的程序改正了。
《微机原理》实验指导书(加硬件)改
微型计算机原理实验指导书襄樊学院物理与电子信息工程系实验要求1.进入实验室前完成的部分1)认真阅读实验指导书,弄懂实验原理和实验内容。
分析实验内容A程序的结构、实现方法。
2)编写实验所要用到的程序,将其放在U盘上。
3)写出预习报告(其中应有实验内容A、B的程序清单)。
2. 进入实验室后完成的部分1)对实验内容A对其进行汇编、链接获得可执行文件。
运行可执行文件,实现实验内容A的要求。
2)对实验内容B的程序进行调试,修改错误,获得要求的结果。
3)保存调试后的程序。
3.实验结束后的部分对实验结果进行分析、总结,写出实验报告。
实验报告内容及格式1.实验目的2.实验设备3.实验内容只做文字叙述,程序部分放在程序清单中。
4.程序清单实验内容B的完整程序。
如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。
实验内容A的程序清单放在预习报告中,不再列写。
5.实验步骤6.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。
此项为实验成绩评定的重要依据。
汇编语言程序的上机过程本章内容在实验一~实验六中使用。
1.实验环境在计算机的C盘(也可以是其他盘符)下,有一个MASM50(也可能是其他文件名)文件夹,在这个文件夹下存放着对汇编语言源程序进行汇编、调试所需要的各种文件。
2.建立源程序可以用你熟悉的文本编辑器,如记事本、写字板等来建立一个源程序文件。
但需要注意以下几点:(1)在“我的电脑\工具\文件夹选项\查看\”中将“隐藏已知文件类型的扩展名”上的“√”去掉。
(2)源程序文件的文件名应该是*.asm,如果不是应进行修改。
(3)源程序文件中的字符必须是西文半角字符,不能使用中文全角字符。
(4)不要把数字“0”错写成字符“O”,或者把字符“O”错写成数字“0”。
3. 进入DOS系统在Windows XP的“附件”中有一个“命令提示符”,运行它即可进入DOS系统。
4. 在DOS系统中进入文件夹E:\>CD 文件夹名↙。
微机原理实验指导书
实验一数据传送实验目的 :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 单元中存放。
微机原理实验指导书
目录实验一并行接口8255应用实验 (1)实验二交通灯模拟控制实验 (5)实验三可编程定时器8254应用实验 (9)实验四8254控制继电器实验 (13)实验五DAC0832数模转换实验 (17)实验六ADC0809模数转换实验 (21)实验七串行通信8251应用实验 (25)实验一并行接口8255应用实验一、实验目的1.掌握8255工作方式0的使用方法;2.掌握8255I/O口的输入输出使用方法;3.了解8255、电平开关、LED发光二极管的电路连接。
二、实验内容1、逻辑电平开关和LED显示电路如图1-1所示,8255的电路连接如图1-2所示。
2、利用8255C口作为并行数据的输入端(逻辑电平开关实现),A口作为并行数据的输出端(LED显示电路实现),当电平开关拨到上方时对应发光二极管亮,拨到下方时对应发光二极管灭,编写程序。
图1-1 逻辑电平开关和LED显示电路图1-2 8255接线电路三、接线方案PC0~PC7/8255 接K0~K7/逻辑电平开关PA0~PA7/8255 接L0~L7/LED显示CS/8255 接Y1/IO地址图1-3实验线路四、编程提示及流程图1、A口地址—288H;B口地址—289H;C口地址—28AH;8255控制寄存器端口地址—28BH。
2、参考程序流程图如图1-4所示。
图1-4 参考程序流程图五、实验步骤1、连接USB通信电缆和电源线;2、根据图1-3实验线路进行电路连接;3、打开“HQFC-A微机接口”应用程序,新建或打开实验程序;4、点击“编译”,并确保实验程序没有语法错误;5、点击“构建”,将目标文件生产可执行文件(后缀为EXE);6、点击“重构运行”,可执行文件(后缀为EXE)下载到实验设备中运行;7、观察实验现象,并记录。
若实验现象有误请重复第4~6步。
六、参考程序;*******************************;;* 8255方式0的C口输入,A口输出 *;;*******************************;data segmentio8255a equ 288hio8255b equ 28bhio8255c equ 28ahdata endscode segmentassume cs:codestart:mov ax,datamov ds,axmov es,axmain:mov dx,io8255b ;设8255为C口输入,A口输出mov al,() ;计算控制字out dx,alinout: mov dx,() ;从C口输入一数据in al,dxmov dx,() ;从A口输出刚才自C口out dx,al ;所输入的数据jmp inout ;跳转,则继续自C口输入,A口输出code endsend start七、思考题1、根据程序要求补充实验程序,并执行程序观察现象;2、修改程序,电平开关拨到上方时发光二极管灭,拨到下方时发光二极管亮。
2023年微机原理实验指导书
2.1系统生疏试验【试验目的】把握TD 系列微机原理及接口技术教学试验系统的操作,生疏Wmd86 联机集成开发调试软件的调试环境。
【试验设备】PC 机一台,TD-PITE 试验装置一套。
【试验内容】编写试验程序,将00H~0FH 共16 个数写入到内存3000H 开头的连续16 个存储单元中。
【试验步骤】1.运行Wmd86 软件,进入Wmd86 集成开发环境。
2.在设置菜单中选择“汇编语言”和“16 位存放器”。
3.单击文集菜单的建命令,建一个文档,默认文件名为Wmd861。
4.编写试验程序,并保存,此时系统会提示输入的文件名,输完后点击保存。
5.单击编译文件,假设程序编译无误,则科技连续单击进展链接,链接无误前方可以加载程序。
6.连接PC 与试验系统的通讯电缆,翻开试验系统电源。
7.编译、链接都正确并且上下机通讯成功后,就可以下载程序,联机调试了。
可以通过端口列表中的“端口测试”来检查通讯是否正常。
点击下载程序。
为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。
下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。
起始运行语句下会有一条绿色的背景。
8.将输出区切换到调试窗口,试验命令D0000:3000 查看内存3000H 起始地址的数据。
9.点击按钮运行程序,等待程序运行停顿后,通过命令来观看程序结果。
10.也可以设置端点,要修改内存中的数据可以使用命令E,如E0000:3000 可以修改地址0000:3000 处的数据,修改完一个后,可按“空格”键连续输入下一个数。
输入完成后按“回车”键退出。
2.2数制转换试验【试验目的】1 把握不同进制数及编码相互转换的程序设计方法,加深对数值转换的理解。
2.生疏程序调试的方法。
【试验设备】PC 机一台,TD-PITE 试验装置一套。
【试验内容】编写程序,将ASCII 码表示的十进制数转换为二进制数。
【试验步骤】1.依据程序流程图编写程序。
微机原理试验指导书
《微型计算机原理》实验指导书上海行知学院计算机系二零零六年五月实验一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单元开始的数据区中。
微机原理实验指导书
微机原理实验指导书课程类型:考查课专业班级:信息工程与自动化学院通信2013级学年学期:2014—2015 学年上学期课程总学时:16 学时主讲教师:杨青青说明:1. 本次实验为16个学时,以微机原理课程为依托,每两个学时完成一个实验,原理上应该有8份实验报告。
2. 实验报告可采取打印的方式,分析、填写程序等部分应该手写。
实验一汇编程序上机训练-熟悉指令格式一、上机环境:Window7系统,MasmEditor软件二、实验目的:1、学习使用在MasmEditor环境下完成汇编语言的编译、连接、运行、调试等。
2、熟悉80X86的指令系统及汇编语言指令格式。
三、实验步骤:1、编译源程序,生成可执行文件(.exe);2、用DeBug的各个调试指令,观察寄存器窗口的变化。
四、实验内容:参照微机原理课程第三章内容,进行课本例题的上机练习,完成程序的调试,例如单步步入、断点设置等,并在寄存器窗口察看各个寄存器的变化,从而也加深对80X86寻址方式的理解。
上机题目:微机原理教材第三章,例3.1,例3.3,例3.4,例3.6,例3.7,例3.8,例3.11,例3.23,例3.52,例3.64,例3.68,例3.71,例3.73思考题:试编程实现:(1)AL寄存器的第四位清0;(2)BL寄存器的第四位置1;(3)CL寄存器的第四位取反;(4)测试DL寄存器的最低两位是否为0,若是将0送入AL寄存器;否则将1送入AL寄存器。
五、实验报告要求:1.实验报告符合要求格式2.完成思考题的编程实现。
实验例题实验四汇编程序上机训练-多重循环程序设计一、上机环境:Window7系统,MasmEditor软件二、实验目的:1. 学习并熟悉汇编的多重循环程序的设计。
2. 进一步熟悉在MasmEditor环境下完成汇编语言的编译、连接、运行、调试等操作。
三、实验内容:例1:有十位同学的成绩分别是80,100,78,56,79,90,96,88,82,75;编程分别统计低于60分,60-69,70-79,80-89,90-99,100分的人数,并分别存入a100,b90,c80,d70,e60,f50单元中。
微机原理实验指导书
1 / 14四. 实验任务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) 独立按键检测原理图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所示。
微机原理上机实验
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)
微机原理课程上机实验指导书
第一部分汇编语言程序设计实验实验一汇编语言编程基础运行CmdC:cd..cd.cd..cd masmmasmdebug2000汇编语言是一种面向机器的“低级”语言,是计算机能够提供给用户的最快而最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
要真正理解计算机的工作过程,理解计算机程序的执行过程,就必须学习汇编语言。
也正是因为如此,汇编语言程序设计是计算机专业和电子,自动控制等相关专业的重要课程。
但是,对于刚开始学习汇编语言的学生而言,汇编语言的一些命令非常抽象,很难理解,往往学习了很长时间也编不出满意的程序,更别说自如的应用,以致我们认为汇编语言很难掌握,影响我们学习汇编语言的兴趣。
实际上,为了掌握好汇编语言,我们可以从熟悉、使用DEBUG调试工具开始,先来分析和读懂一些与硬件相关的小程序,这也是我们实验一的目的。
汇编语言程序的上机步骤以下列源程序为例,先学习汇编语言的上机步骤。
文件名为:DATA SEGMENTNUM1 DB 35,35HNUM2 DW 35,35HNUM3 DB 4 DUP (34,3 DUP (34H))NUM4 DB '34AB'NUM5 DW '34','AB'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET NUM1MOV AL,[BX]MOV BX,OFFSET NUM5MOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START一.上机步骤汇编语言程序MASM软件由编辑器,汇编程序,连接程序以及调试程序四个部分组成。
汇编语言编制完成后,在计算机上的操作过程就分为四个阶段。
1. 编辑首先输入源程序,有两种方法:(1)在记事本里录入,特别注意的是:在保存时文件格式必须选择所有文件,文件后缀名为.ASM, 即保存时文件名为。
微机原理上机实验指导书
第一部分调试程序 DEBUG1.DEBUG 的调用格式:[drive:] [path] debug [d:] [path] [filename.ext]example: 调入1)debug ↓2)debug↓-N ↓-L↓2.退出DEBUG-Q↓3.DEBUG 的子命令1)相关的CPU 寄存器,FLAGS寄存器标志位状态,驱动器号标志码(1)驱动器编号编号磁盘属性0 A 软盘1 B 软盘2 C 硬盘(2)命令中使用地址。
段地址:偏移量example:CS:0100段地址:始偏移量末偏移量example:CS:0100 0110段地址:始偏移量长度example:CS:0100 L10 (3)不调入文件时,IP 为0100。
(4)SP 指向栈底。
(5)不调入文件时,AX、BX、CX、DX、SI、DI、BP为0。
当调入文件时,文件长度装入CX,大于64K时,其长度高位装入BX,均以字节为单位。
(6)CS、DS、SS、ES位于内存空间对应段的底部,既DEBUG程序后的第一段。
(7)FLAGS 寄存器标志位为NV(无溢出)UP(方向为增)EI (中断允许)PL(符号为正)NZ (非零)NA (无辅助进位)PO(奇)NC(无进位)(8)DEBUG 子命令有:A (汇编);U (反汇编);G(运行);T(跟踪);R(寄存器显示与修改);D(内存显示);E(内存修改);S(查找);F(填充);M (数据移动);C(数据比较);N(文件命名);W(存盘);L(装入);I(端口输入);O (端口输出);H(十六进制运算);Q(退出)。
格式:R[寄存器名]功能:显示或修改CPU寄存器的内容,包括:AX BX CX DX ;CS DS SS ES ;SP SI BP DI IP FLAGS FLAGS 符号表标志位名置位复位O OV NVD DN UPI EI DIS NG PLZ ZR NZA AC NAP PE POC CY NCExample:-R ↓;立即显示各寄存器的内容-R BX↓;显示并修改BX的内容BX 0000:0100↓-RF ↓OV DN EI NG ZR AC PE CY- PONZ↓格式:A[起始地址]功能:从始地址汇编并把指令变成机器码;不指定始地址,默认为当前的CS:连续地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分汇编语言程序设计实验实验一汇编语言编程基础运行CmdC:cd..cd.cd..cd masmmasmdebug2000汇编语言是一种面向机器的“低级”语言,是计算机能够提供给用户的最快而最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
要真正理解计算机的工作过程,理解计算机程序的执行过程,就必须学习汇编语言。
也正是因为如此,汇编语言程序设计是计算机专业和电子,自动控制等相关专业的重要课程。
但是,对于刚开始学习汇编语言的学生而言,汇编语言的一些命令非常抽象,很难理解,往往学习了很长时间也编不出满意的程序,更别说自如的应用,以致我们认为汇编语言很难掌握,影响我们学习汇编语言的兴趣。
实际上,为了掌握好汇编语言,我们可以从熟悉、使用DEBUG调试工具开始,先来分析和读懂一些与硬件相关的小程序,这也是我们实验一的目的。
1.1 汇编语言程序的上机步骤以下列源程序为例,先学习汇编语言的上机步骤。
文件名为1.asm:DATA SEGMENTNUM1 DB 35,35HNUM2 DW 35,35HNUM3 DB 4 DUP (34,3 DUP (34H))NUM4 DB '34AB'NUM5 DW '34','AB'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET NUM1MOV AL,[BX]MOV BX,OFFSET NUM5MOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START一.上机步骤汇编语言程序MASM软件由编辑器,汇编MASM.EXE程序,连接LINK.EXE程序以及DUEBUG.EXE调试程序四个部分组成。
汇编语言编制完成后,在计算机上的操作过程就分为四个阶段。
1. 编辑首先输入源程序,有两种方法:(1)在记事本里录入,特别注意的是:在保存时文件格式必须选择所有文件,文件后缀名为.ASM, 即保存时文件名为XXX.asm。
(2)双击MASM软件中的编辑软件文件框,在EDIT下输入源程序。
用ALT+F键打开file菜单,用其中的save功能键将文件存盘。
特别注意的是:汇编语言源程序文件的后缀必须为.asm,即保存时文件名为XXX.ASM。
图1-1 EDIT编辑界面2.用汇编程序MASM.Exe对源程序.ASM文件汇编,生成目标文件.OBJ汇编阶段的任务是把汇编语言源程序翻译成机器代码(称为目标),产生二进制格式的目标文件XXX.OBJ(名字与源程序名相同,只是后缀名不同),如果源程序有语法错误,则汇编过程结束后,MASM.EXE汇编程序会指出源程序中错误的行号和错误的原因,我们可以再用编辑程序来修改源程序中的错误,汇编无错后,方可得到正确的.OBJ目标文件,才能进行下一部的连接LINK。
双击MASM软件中的MASM.Exe文件框,在命令行后键入源程序名XXX.asm,(如果源程序与MASM软件在同一路径下,可以只键入文件名,而不要后缀),如以下界面:图1-2 MASM编译1.asm文件无错误时的界面3.连接LINK.EXE由于汇编所得到的目标代码的存放地址并不是可执行的绝对地址,而是浮动的相对地址, 汇编产生的目标文件.OBJ还不能在计算机上运行,需要用连接程序LINK.EXE把目标文件.OBJ 文件转换为可执行文件XXX.EXE文件.双击MASM软件中的LINK.Exe文件框,在命令行后键入目标文件名XXX.OBJ(如果源程序,目标文件与MASM软件在同一路径下,可以只键入文件名,而不要后缀),如以下界面:图1-3 LINK连接1.OBJ文件界面如果连接没有错误,就会产生一个XXX.EXE的可执行文件,如果.OBJ文件有错误,连接时会指出错误的原因。
对于无堆栈警告(warning: no stack segment)的提示,可以不予理睬,它是由于我们在源程序中没有定义堆栈段的原因,对于比较小的程源序和不需要再特别定义堆栈段的源程序,我们可以不定义堆栈段,它并不影响程序的正确执行。
反而,如果连接时有其他的错误,则要检查并修改源程序XXX.ASM,然后再重新汇编MASM.EXE,连接link.exe 的步骤,直到得到正确的XXX.EXE文件为止。
4.运行和调试DEBUG.exe运行可执行文件,即双击XXX.EXE文件框即可,或在DOS下运行此程序,E:\XXX.EXE。
1.2熟悉、使用DEBUG调试工具以下重点介绍一些调试命令:以1.asm源程序为例:图1-4 运行和调试DEBUG界面1)N命令:用于指定进行读写的磁盘上的文件。
命令格式:N[path][filename]如: -n 1.exe指定要装载(Load)或写入磁盘(Write)的文件名。
2)L命令:将指定的文件装入内存中命令格式:L 回车键-l 回车键3)反汇编命令U就是将存放在制定范围内的目标代码,反汇编成8086/8088的汇编指令格式,并按目标代码首地址,目标代码和对应的源指令的格式,在屏幕上显示出来。
把目标代码反汇编后,用户可以方便地知道,程序从什么地址开始执行,执行的是哪一条指令,执行到什么地址为止。
命令格式:U[地址范围]-u13FE:0000 B8FC13 MOV AX,13FC13FE:0003 8ED8 MOV DS,AX13FE:0005 BB0000 MOV BX,000013FE:0008 8A07 MOV AL,[BX]13FE:000A BB1A00 MOV BX,001A13FE:000D 8B07 MOV AX,[BX]13FE:000F B8004C MOV AX,4C0013FE:0012 CD21 INT 2113FE:0014 0000 ADD [BX+SI],AL13FE:0016 0000 ADD [BX+SI],AL13FE:0018 0000 ADD [BX+SI],AL13FE:001A 0000 ADD [BX+SI],AL13FE:001C 0000 ADD [BX+SI],AL13FE:001E 0000 ADD [BX+SI],AL13FE为CS即代码段的段基地址,0000,0003,0005是偏移地址,B8FC13等是机器码(由代码段中的二进制机器指令反汇编得到)也就是程序在机器中的代码, MOV AX,13FC是助记符,帮助记忆机器中的指令。
(源指令)4)运行命令:T命令:单步运行命令以1.EXE调试为例,单步运行二次13FE:0000 B8FC13 MOV AX,13FC13FE:0003 8ED8 MOV DS,AX13FE:0005 BB0000 MOV BX,000013FE:0008 8A07 MOV AL,[BX]13FE:000A BB1A00 MOV BX,001A13FE:000D 8B07 MOV AX,[BX]13FE:000F B8004C MOV AX,4C0013FE:0012 CD21 INT 2113FE:0014 0000 ADD [BX+SI],AL13FE:0016 0000 ADD [BX+SI],AL13FE:0018 0000 ADD [BX+SI],AL13FE:001A 0000 ADD [BX+SI],AL13FE:001C 0000 ADD [BX+SI],AL13FE:001E 0000 ADD [BX+SI],AL-tAX=13FC BX=0000 CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13EC ES=13EC SS=13FC CS=13FE IP=0003 NV UP EI PL NZ NA PO NC13FE:0003 8ED8 MOV DS,AX-tAX=13FC BX=0000 CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=0005 NV UP EI PL NZ NA PO NC13FE:0005 BB0000 MOV BX,0000可以看到机器随机分配给该程序的数据段的段基地址被AX赋予给DX。
该程序的代码段的段基地址为13FE,数据段的段基地址为13FC 。
单步执行命令T执行一条命令,并显示CPU中寄存器中的内容和要执行的下一条命令,大家可以看到AX,BX,CX等寄存器的内容,T命令可以跟踪程序中的没一条指令的执行情况.P命令:也是单步运行命令。
但是P命令对于每一条指令语句都是一次执行完成. 比如CALL、LOOP和DOS功能调用的INT n等指令语句T命令能在程序的执行中,跟随IP指示的地址,跟踪指令的执行,而P命令则是按指令语句,续进执行的.在调试中,用户可根据需要,选择不同的运行程序命令,以适应调试的要求。
5)G (Go)命令:连续执行内存中的程序,还可以在程序中设置断点,逐段地执行程序,以便一段一段地堆程序进行调试。
命令格式:G[ =address[address[address…]]其中第一个参数=address,规定了执行的起始地址,即以CS的内容为段地址,以等号后面的地址为偏移地址,在输入时,等号是不可缺少的,若不输入起始地址,则以CS:IP为起始地址,后面的地址参数是断点地址。
如果在G命令中没有设置断点,或设有断点但程序在执行中未能到达断点处,这时程序将一直运行,直至结束。
在结束时显示提示信息“Program terminated normally"。
在G命令中可以设置断点,格式为G=0000 000D13FE:000D 8B07 MOV AX,[BX]13FE:000F B8004C MOV AX,4C0013FE:0012 CD21 INT 21AX=1323 BX=0000 CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=000A NV UP EI PL NZ NA PO NC13FE:000A BB1A00 MOV BX,001A-可以看到AL中的数为23再设置一次断点G=0000 000F-g=0000 000fAX=3334 BX=001A CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=000F NV UP EI PL NZ NA PO NC13FE:000F B8004C MOV AX,4C00-可以看到AX=33346)D (Dump)命令:显示指定范围(range)内的内存单元的内容。