2011年微机原理课程上机实验指导书
微机原理实验指导书
实验一初级程序的编写与调试一、实验目的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命令直接调出寄存器,来检查各寄存器内容是否正确。
微机原理实验指导书定稿
实验一二进制码转换为BCD码一、实验目的1、掌握数码转换基本方法,加深对数码的理解。
2、用于十进制BCD码显示。
二、实验内容将AX的内容转换为十进制BCD码。
三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8KASM文件夹,点击S2.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
⑵复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H单元中,故其值应为06、05、05、03、05。
脱机模式:⑴在P.态,按SCAL键,输入2CE0,按EXEC键。
⑵复位RST键,由于AX中给定数为0FFFF,查看BCD码结果保留在4100H~4104H 单元中,故其值应为06、05、05、03、05。
五、实验程序清单;将AX拆为5个BCD码,并存入RESULT开始的5个单元DA TA SEGMENT A T 0ORG 4000HRESULT DB 5 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA ORG 2CE0HSTART PROC NEARMOV AX, DATAMOV DS, AXMOV DX,0000HMOV AX, 65535MOV CX, 10000DIV CXMOV RESULT, AL ;除以10000, 得WAN位数MOV AX,DXMOV DX,0000H MOV CX, 1000DIV CXMOV RESULT+1, AL ; 除以1000, 得QIAN位数MOV AX,DXMOV DX,0000HMOV CX, 100DIV CXMOV RESULT+2, AL ; 除以100, 得BAI位数MOV AX,DXMOV DX,0000HMOV CX, 10DIV CXMOV RESULT+3, AL ; 除以10, 得SHI位数MOV RESULT+4, DL ; 得GE位数JMP $CODE ENDSEND START实验二 BCD 码转换为二进制码一、实验目的1、掌握BCD 码到二进制码的转换方法。
2011年微机原理课程上机实验指导书
第一部分汇编语言程序设计实验实验一汇编语言编程基础汇编语言是一种面向机器的“低级”语言,是计算机能够提供给用户的最快而最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
要真正理解计算机的工作过程,理解计算机程序的执行过程,就必须学习汇编语言。
也正是因为如此,汇编语言程序设计是计算机专业和电子,自动控制等相关专业的重要课程。
但是,对于刚开始学习汇编语言的学生而言,汇编语言的一些命令非常抽象,很难理解,往往学习了很长时间也编不出满意的程序,更别说自如的应用,以致我们认为汇编语言很难掌握,影响我们学习汇编语言的兴趣。
实际上,为了掌握好汇编语言,我们可以从熟悉、使用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。
微机原理课程上机实验内容
该课程在微机房实验共分为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 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)认真阅读实验指导书,弄懂实验原理和实验内容。
分析实验内容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.利用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的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
微机原理上机实验报告 实验报告内容3
B4(RAM)区:CS、BLE、BHE —— A3区:mCS0、BLE、BHE
B4(RAM)区:RD、WR —— A3区:MEMR、MEMW
B4(RAM)区:JP49(A0..A7) —— A3区:JP29(A1..A8)
B4(RAM)区:JP38(A8..A15) —— A3区:JP33(A9..A16)
ቤተ መጻሕፍቲ ባይዱ.CODE
START: MOV AX,8000H ;存贮器扩展空间段地址
MOV DS,AX
MOV ES,AX
NOP
MOV CX,100H
MOV SI,3000H
MOV DI,6000H
CALL Move
MOV CX,100H
MOV SI,3000H
MOV DI,6000H
CLD
REPE CMPSB
JNE ERROR
TRUE: JMP $
ERROR: JMP $
Move PROC NEAR
CLD
CMP SI,DI
JZ Return
JNB Move1
ADD SI,CX
DEC SI
ADD DI,CX
DEC DI
STD
Move1: REP MOVSB
Return: RET
Move ENDP
END START
三、实验结果及其分析
《微机原理与接口技术》课程实验报告
实验名称
数据传送(存贮器)
姓名
系院专业
班级
学号
实验日期
指导教师
成绩
一、实验目的和要求
1、了解静态存贮器的特性、扩展方法,掌握存贮器的读写时序。2、掌握CPU对16位静态存贮器的访问方法3、认真预习本节实验内容,尝试自行编写程序,填写实验报告
微机原理上机实验指导书
第一部分调试程序 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)
实验一系统操作及程序调试举例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单元开始的数据区中。
微机原理实验指导书
微机原理及程序设计实验指导书班级:姓名:学号:指导老师:完成日期:微机原理实验实验要求及运行环境交打印版实验报告,实验要求:实验成绩百分制(总分100分)实验预习(30分)实验过程(40分)提前预习,标好程序注释,修改好程序;10分个人按要求独立完成,填好实验结果,按时交实验报告20分不做与本实验无关的事(如玩游戏、聊天、打电话、听音乐等)10分不得缺席,实验签名,不代他人签名10分带走自己的垃圾,保持实验室卫生,电脑设备桌椅摆设整齐,保管好个人物品5分按秩序进出实验室,不拥挤,注意安全,爱护设备,保证设备完好5分实验结果,实验中经老师检查过10分实验报告(30分)报告按统一格式要求填写,包括:课程名称、姓名、学号、班级任课老师等5分实验报告包括实验目的、实验内容、程序框图、程序清单、实验要求5分读懂程序加注释(每句注释10+分段注释5)(手写)15分程序修改,实验要求的完成及结果5分2、实验运行环境在电脑中装ASM Masm for windows 集成实验环境2008。
双击图标打开ASM MasM for windows 集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。
运行结果显示:实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。
二、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图四、程序清单CRLF MACRO ;宏定义,宏名:CRLFMOV DL, 0DH ;把0DH给DLMOV AH, 02H ; 把02H给AHINT 21H ;系统功能调用——实现回车功能MOV DL, 0AH ;把0AH给DLMOV AH, 02H ; 把02H给AHINT 21H ;系统功能调用——实现换行功能ENDM ;宏定义结束——本段实现回车换行功能DATA SEGMENT;数据段定义,段名DA TADATA1 DB 33H, 39H, 31H, 37H, 34H(, 3);变量DA TA1中装入加数DATA2 DB 36H, 35H, 30H, 38H, 32H;变量DATA2中装入被加数DATA ENDS;数据段定义结束——本段实现了两个数据的定义STACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV AX, TOPMOV SP, AXMOV SI, OFFSET DA TA2MOV BX, 05 ;06CALL DISPLCRLFMOV SI, OFFSET DA TA1MOV BX, 05 ;06CALL DISPLCRLFMOV DI, OFFSET DATA2CALL ADDAMOV SI, OFFSET DA TA1MOV BX , 05 ;06 |CALL DISPLCRLFMOV AX, 4C00HINT 21HDISPL PROC NEARDS1: MOV AH, 02MOV DL, [SI+BX-1]INT 21HDEC BX ;BX-1JNZ DS1 ;相等则转移RETDISPL ENDPADDA PROC NEARMOV DX, SIMOV BP, DIMOV BX, 05 ;06 | 07AD1: SUB BYTE PTR [SI+BX-1] , 30HSUB BYTE PTR [DI+BX-1] , 30HDEC BXJNZ AD1MOV SI, DXMOV DI, BPMOV CX, 05 ;06CLCAD2: MOV AL, [SI]MOV BL, [DI]ADC AL, BLAAAMOV [SI] , ALINC SIINC DILOOP AD2MOV SI, DXMOV DI, BPMOV BX, 05AD3: ADD BYTE PTR [SI+BX-1], 30HADD BYTE PTR [DI+BX-1], 30HDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验要求1.读懂源程序,写出源程序注释。
微机原理实验指导书(注释版修正版)-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。
《微机原理及应用技术》实验指导书
在执行过第二步后,如有出错信息时,就不能跳跃到第四步去,如果强行执行第四步, 将无任何有效结果。
说明:要清楚,在第二步中检测出的错误均为每一条语句的语法或用法错误,它并不能 检测出程序的逻辑设计(语句安排位置)错误,所以就要记好出错的行号。在记录行号后, 就应再次执行第一步,这时的操作应是打开已编好的源程序(以 EDIT 为例:在 DOS 提示符 下键入:
3
《微机原理》实验指导书
段寄存器 CS,DS,ES 和 SS 均指向 DEBUG 末尾的第一个段。 IP 寄存器置为 0100H。栈指针 SP 指向尾部或装入程序的暂存部分的底部。 其余寄存器皆取零值,但若用户调用时含文件说明,则 CX 含文件长度(长度大于
64K 时 BX 含长度的高位);标志为各自的复位值;驱动器传送地址在代码段位移 80H 处。 注意:若 DEBUG 装入扩展名为.EXE 的文件,则 DEBUG 需重定位且设置段寄存器指示器为 文件中所定义的值。但 DS,ES 指向最低可用段处的程序区前缀。BX 和 CX 为文件容量值。 而 .EXE 文件如果在连接时选择了装入内存高处的参数,则该程序装入高处。
溢出 OF 有/无 OV/NV
方向 DF 减/增 DN/UP
中断 IF 开/关 EI/DI
符号 SF 负/正 NG/PL
零 ZF 零/非 ZR/NZ
辅助 AF 有/无 AC/NA
奇偶 PF 偶/奇 PE/PO
进位 CF 有/无 CY/NC
(2)显示指定寄存器内容
例如:-R AX <Enter>
-R F <Enter>
EDIT filename.asm 回车,依据行号进行修改并存盘,再次进行汇编,直至第二步通过 为止。便可继续向下执行第四步。
2011年微机原理课程设计指导书[1]
微机原理课程设计指导书计算机科学与技术学院计算机系统教研室二零一一年五月目录1 课程设计的目的和任务 (1)2 课程设计指导及要求 (1)3 课程设计的主要步骤 (1)3.1 总体设计 (2)3.2 硬件设计 (2)3.3 软件设计 (2)3.4 软、硬件联调 (2)4 课程设计报告内容及格式要求 (2)5 进度安排 (3)6 课程设计的考核方法及成绩评定 (3)7 课程设计题目 (3)8 主要参考资料 (5)1 课程设计的目的和任务课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
2 课程设计指导及要求在课程设计时,1人1题,同批次同学中选择同一题的人数不超过3人。
在教师指导下,可以相互讨论,但设计报告由学生独立完成,不得互相抄袭。
教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。
学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。
2011版微机原理与接口技术实验指导书2011
3星研集成环境软件如何使用星研集成环境软件星研集成环境软件推荐您使用项目为单位来管理您的程序。
如果您做一个简单的实验,或只希望看一个中间结果,您可以不建立项目文件,系统需要的各种设置,来源于“缺省项目”。
本节不使用项目文件。
本例子旨在通过建立一个具体的程序来介绍星研集成软件的使用方法以及它的强大的调试功能。
使用户很快的上手,体验到我们软件功能的强大和方便。
本实例是将数据段中3000H~30FFH单元的内容传送给实验仪B4区的61C256的2000H~20FFH中;B4区的61C256在I/O设备区,使用IOR、IOW读写;再将它传送回数据段的6000H~60FFH中,程序是用汇编语言来编写。
下面介绍相应的操作步骤:首先运行星研集成软件。
启动画面如图:1、建立源文件下面我们建立源文件,执行[主菜单» 文件»新建],(或者点击图标)打开窗口如下:首先选择存放源文件的目录,输入文件名,注意:一定要输入文件名后缀。
对源文件编译、连接、生成代码文件时,系统会根据不同的扩展名启动相应的编译软件。
比如:*.asm 文件,使用TASM来对它编译。
本实例文件名为move.asm。
窗口如下:按“确定”即可。
然后出现文件编辑窗口:输入源程序,本实例的源程序如下:.MODEL TINY ;memory mode : tiny.STACK 100 ;堆栈.CODE ;开始程序段START: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPMOV CX,100HMOV SI,3000HMOV DX,2000H START1: MOV AL,[SI]OUT DX,ALINC SIINC DXLOOP START1MOV DI,6000HMOV DX,2000HMOV CX,100H START2: IN DX,ALMOV [DI],ALINC DIINC DXLOOP START2SJMP $Move ENDPEND START 输入源程序,如下图:这样一个源文件就建立好了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分汇编语言程序设计实验实验一汇编语言编程基础汇编语言是一种面向机器的“低级”语言,是计算机能够提供给用户的最快而最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
要真正理解计算机的工作过程,理解计算机程序的执行过程,就必须学习汇编语言。
也正是因为如此,汇编语言程序设计是计算机专业和电子,自动控制等相关专业的重要课程。
但是,对于刚开始学习汇编语言的学生而言,汇编语言的一些命令非常抽象,很难理解,往往学习了很长时间也编不出满意的程序,更别说自如的应用,以致我们认为汇编语言很难掌握,影响我们学习汇编语言的兴趣。
实际上,为了掌握好汇编语言,我们可以从熟悉、使用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)内的内存单元的内容。