自编微机原理实验指导书
- 格式:doc
- 大小:173.95 KB
- 文档页数:17
实验一初级程序的编写与调试一、实验目的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命令直接调出寄存器,来检查各寄存器内容是否正确。
微机原理实验指导部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑微机原理实验指导第一部分实验的目的和要求一实验要求1、实验前作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。
实验时要遵守实验室的规章制度,爱护实验设备。
要熟悉与实验相关的系统软件<如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在程序的调试过程中,有意识地学习及掌握DEBUG程序的各种操作命令,以便掌握程序的调试方法及技巧。
b5E2RGbCAP3、为了更好地进行管理,要求用硬盘<注:D盘下)存储程序,以避免文件丢失。
注:文件名必须完整,源程序要带有后缀 .asm 。
路径名以及文件名中不能包含汉字,只能使用字符。
4、程序调试完后,须由实验辅导教师在机器上检查运行结果。
5、每个实验完成后,应写出实验报告。
二实验报告规范1、要求使用学校专用的实验报告纸。
填写的信息包括:课程名称、实验序号、专业、班级、姓名、同组实验者、实验时间。
2、报告书写要规范,内容言简意赅。
内容应包括:实验名称、目的、内容、原理、实验步骤、实验记录、数据处理<或原理论证、或实验现象描述、或结构说明等)。
p1EanqFDPw3、一个实验对应一份实验报告。
三实验的目的实验目的不仅是为了验证书本理论,更重要的是对实践能力的培养。
其中包括:实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等。
开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。
DXDiTa9E3d对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序<或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或部分改变程序加以实现。
RTCrpUDGiT四实验的评价方式每次实验的考核结果按优秀、良好、中等、及格和不及格来评价。
实验一系统认识与数码转换实验一、实验目的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学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
4掌握用DEBUG调试汇编程序的方法,为以后实验打下基础。
【实验内容】1建立软件工作环境为了正常运行汇编程序,需要如下程序:masm.exe 或tasm.exe ;汇编命令link.exe ;链接命令debug.exe ;调试命令 ;编辑命令等2建立汇编文件例在屏幕上输出'This is a masm sample!'首先使用edit编辑如下源程序,并保存为sample.asm:;Program is an exampledata segmentastr DB 'This is a masm sample!',0dh,0AH,'$'data endscode segmentassume CS:code,DS:datamain proc farstart:PUSH DS ;保护环境,返回DOSXOR AX, AXPUSH AXMOV AX, data ;数据段的初始化MOV DS, AXLEA DX, astr ;取得字符串的首地址MOV AH, 09h ;9号功能调用INT 21hRETmain endpcode endsend start1)使用masm汇编命令汇编源程序c:\ >masm sample.asm ---开始汇编Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. ……--软件提示Object Filename[sample.obj]: --提示输入目标文件名,可省略直接回车Source listing[Nul.lst]: --提示输入列表文件名,可省略直接回车Cross reference[NUL.crf]:Warning errors 0Severe errors 0注意:若汇编的错误提示不为0,则须重新使用命令edit sample.asm修改错误,然后再汇编,该过程直到错误提示为0为止。
实验一汇编语言程序设计实验---- 存储器块清零或赋值一.实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二.实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。
例如将4000H开始的100个字节内容清零或全部赋值为33H。
三.实验仪器微机、WAVE6000编程环境软件,单片机实验箱注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
编译器默认设置:实验二存储块移动一.实验目的1 熟悉51汇编语言程序结构。
2 熟悉循环结构程序的编写,进一步熟悉指令系统。
3 熟悉编程环境和程序的调试。
二.实验内容将指定源地址(3000H)和长度(100字节)的存储块移动到目的地址(4000H)。
三.实验仪器微机、WAVE6000软件,单片机实验箱注意:在编程环境中,可以通过软件仿真,观察程单片机运行情况。
实验三数据排序一.实验目的1了解数据排序的常用算法,掌握冒泡算法。
2进一步熟悉编程环境和调试方法。
3熟悉汇编程序设计。
二.实验内容将50H开始的10个随机数按从小到大的顺序排列。
三.实验仪器微机、WA VE6000编程环境注意:由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)方法是:窗口---数据窗口---DATA 找到50H开始的10个2位16进制数,双击,修改其数值如(6,2,4,9,3,7,1,5,8,0)之后编译(下载),单步执行,查看排序执行过程冒泡算法(两层循环,以下是内层循环开始……)。
实验一数据传送实验目的 :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 单元中存放。
《微机原理》实验指导书制订教师:王晓锐2015年4月目录实验1 EMU8086操作 (3)实验2 简单程序设计 (4)实验3 分支程序设计 (5)实验4 循环程序设计 (6)实验5 简单LED控制实验 (7)附录A:Emu8086使用指南 (8)附录B:源程序代码 (17)实验1 EMU8086操作1 实验目的:熟悉仿真软件emulator的使用。
熟悉指令系统和常用的伪指令,掌握简单程序的设计方法。
2 实验内容1:编写计算F=XY+Z-500的程序,其中X,Y,Z均为无符号的字节操作数。
程序代码如下所示。
DATA SEGMENTX DB 29Y DB 8Z DB 25F DW ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXMOV AL,XMUL YMOV BH,0MOV BL,ZADD AX,BXSUB AX,500MOV F,AXMOV AX,4C00HINT 21HCODE ENDSEND START(1)请阅读该程序,并写出注释。
(2)在emulator中输入以下代码,进行调试。
(3)请写出计算的结果是多少。
(4)请说明变量X,Y,Z和F的物理地址是多少。
4 实验报告:请采用标准的实验报告纸,按照以上实验要求完成实验报告,最后进行实验总结,给出在调试过程中遇到的问题以及如何实验2 简单程序设计实验题目:进一步熟悉指令系统和常用的伪指令,掌握简单程序设计的方法、熟悉逻辑运算指令与算术运算指令。
实验内容:编写一个32位无符号数除法的程序。
存放在NUM1中的32位无符号数与存放在NUM2中的16位无符号数相除,商和余数分别存放在NUM3和NUM4中。
数据段的定义如下以及除法程序片段如下所示。
写出该程序,并在emulator中调试这个程序。
数据定义片段:NUM1 DD 2A8B7654HNUM2 DW 5ABCHNUM3 DW ?NUM4 DW ?除法程序片段:MOV AX,WORD PTR NUM1MOV DX,WORD PTR [NUM1]+2DIV NUM2MOV NUM3,AXAND NUM4,DX实验知识点:伪指令,简单的程序设计,逻辑操作,算术运算指令实验报告:1、画出实验程序的流程图。
实验一数据传送实验目的: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的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
目录实验一并行接口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、修改程序,电平开关拨到上方时发光二极管灭,拨到下方时发光二极管亮。
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.依据程序流程图编写程序。
第一部分软件部分实验实验一汇编语言上机环境的熟悉和命令使用【实验目的及要求】1学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
4掌握用DEBUG调试汇编程序的方法,为以后实验打下基础。
【实验内容】1建立软件工作环境为了正常运行汇编程序,需要如下程序:masm.exe 或tasm.exe ;汇编命令link.exe ;链接命令debug.exe ;调试命令 ;编辑命令等2建立汇编文件例在屏幕上输出'This is a masm sample!'首先使用edit编辑如下源程序,并保存为sample.asm:;Program is an exampledata segmentastr DB 'This is a masm sample!',0dh,0AH,'$'data endscode segmentassume CS:code,DS:datamain proc farstart:PUSH DS ;保护环境,返回DOSXOR AX, AXPUSH AXMOV AX, data ;数据段的初始化MOV DS, AXLEA DX, astr ;取得字符串的首地址MOV AH, 09h ;9号功能调用INT 21hRETmain endpcode endsend start1)使用masm汇编命令汇编源程序c:\ >masm sample.asm ---开始汇编Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. ……--软件提示Object Filename[sample.obj]: --提示输入目标文件名,可省略直接回车Source listing[Nul.lst]: --提示输入列表文件名,可省略直接回车Cross reference[NUL.crf]:Warning errors 0Severe errors 0注意:若汇编的错误提示不为0,则须重新使用命令edit sample.asm修改错误,然后再汇编,该过程直到错误提示为0为止。
2)使用link产生EXE文件c:\>link sample.obj………….…………Run file[sample.exe]:--提示输入可执行文件名,可以省略直接回车List file [NUL.map]:--提示输入连接映象文件,可以省略直接回车Libraries[.lib] --输入文件用到的库文件名,可以省略直接回车………..3)运行生成的可执行文件c:\>sample.exe4)使用DEBUG命令调试、运行可执行文件c:\>debug sample.exea、进入DEBUG后,首先用命令R查看当前DS和IP寄存器内容,记录此值。
b、练习-R,-D,-A,-U,-T,-P,-G命令的使用。
(课本131页表各种命令说明)c、用命令-D查看程序中数据段DATA中定义的变量。
-D DS的内容:偏移地址 eg:-D1421:0000 (1421为数据段的段首址)d、用命令-G运行程序,以便查看结果。
-G 程序结束指令的偏移地址 eg:-G00233调试95引例及Debug的各种命令三实验步骤:1、流程图2、源程序3、调试及运行结果附1:DEBUG各命令的使用练习1.用命令A汇编下列指令,并判断指令正误并说明原因。
ROR AX,8LEA DI,[AX]MOV DS,2010PUSH ALOUT 900,ALMOV [BX],02.用D命令查看DS:200~22F和F000:200~22F两内存块内容,用F命令将字符“A”分别填入这两个内存块,比较填入前后结果,了解可读写内存RAM和只读内存ROM的区别。
3.利用T,P,G命令,执行下列程序段,注意它们的不同之处。
MOV DI,300MOV SI,400MOV CX,3CLDREP MOVSBINT 34. 先在CS:200处汇编一条RET指令,再在CS:100处汇编。
MOV BX,200CALL BXINT 3然后从MOV BX,200处开始执行。
5.用A命令汇编下列程序段,完成将DS:2000开始的5个字节内存内容相加,并把相加的结果存放在DS:2005内存单元中,将程序写到硬盘上,然后用DEBUG调试﹑运行该程序,查看运行结果,观察程序段能否完成指定功能,若不能,说明原因。
MOV CX,5MOV AL,0MOV BX,2000NEXT: ADD AL,[BX]INC BXDEC CXLOOP NEXTMOV [BX],ALINT 3附2:ms-dos方式,是windows提供的一个字符界面的shell窗口,通过“开始\程序\ms-dos 方式”进入ms-dos方式后,可以按下“ALt+Enter”获得全屏幕的窗口,再该窗口下,主要通过键入命令和观察结果获得交互信息。
命令简介1、DIR命令显示当前目录下的文件和目录格式为:dir2、CD命令改变当前工作目录格式为:cd d:\student\your_name3、MD命令建立一个新的目录格式为:md your_name4、DEL命令删除文件格式为:del first01.asm5、RD命令删除目录,要求要删除的目录下无任何目录或文件格式为:rd your_name6、COPY命令拷贝命令格式为:copy first01.asm (将文件first01.asm复制为)【预习要求】1仔细阅读书中“汇编语言上机操作过程及程序调试技术”章节内容。
3根据实验要求,对各项结果进行预测。
【报告要求】1、说明命令T和P的区别。
2、写出附1:中任务5的编辑调试步骤,并附上调试好的程序。
【实验提示】1)DEBUG的进入⑴如果是首次进入DEBUG编程,则只要在DOS提示符下键入DEBUG ↙,即可进入DEBUG环境,显示提示符“-”。
⑵如果要对某个程序使用DEBUG进行调试,只要在DOS提示符下键入DEBUG 文件名↙,即可进入DEBUG环境,显示提示符“-”。
2)程序的汇编与反汇编⑴源程序可以在DEBUG下,用汇编命令A输入到内存中,只需在DEBUG提示符“-”下,键入汇编命令A ↙,并在显示“段寄存器地址:偏移地址”后面键入你自己编写的程序,每键入一条,按一次回车键。
-A ↙127B:0100 MOV CX,5 ↙127B:0103 MOV AL,0 ↙127B:0105 MOV BX,2000 ↙⑵如果进入DEBUG时是使用“DEBUG 文件名↙”进入的,那么在进入DEBUG状态后,可用反汇编命令U,将调入的程序显示出来:-U ↙127B:0100 B90500 MOV CX,5127B:0103 B000 MOV AL,0127B:0105 BB0020 MOV BX,20004)在DEBUG状态下,对所编写文件存盘的步骤1 给程序命名2-N 文件名.COM ↙2 将文件长度放入BX、CX中(高位放入BX,4 低位放入CX中)-R BX ↙(注意!!!由于文件长度一般较小,所以切记BX中付0值)-R CX ↙(文件最末偏移地址减去文件开始的偏移地址即文件长度)3 用写盘命令W把正在调试的内存中程序写入磁盘中-W 〈地址〉↙(文件开始地址)4 退出DEBUG状态用Q命令:-Q ↙5) 在DEBUG状态下,建议使用DOS分配给用户的内存可用区在DEBUG状态下,用户可对所有寄存器、RAM内存随意查看和修改,但由于对DOS 操作系统在内存中存放情况不了解,可能会将存放有操作系统程序的内存内容破坏,从而可能引起系统的异常,出现死机现象,故建议使用DOS分配给用户的内存可用区,其低端地址是刚进入DEBUG时,用命令R查看到的DS:IP。
6) 用连续执行命令G应注意问题用连续执行命令G执行程序时,注意给出执行程序的首地址,并注意执行的程序中有返回DEBUG功能的程序段,如指令INT 20H或断点设置INT 3,否则发出命令后,很容易出现死机,原因是无返回程序段使系统返回命令接受状态,CPU将不断到内存中取指令、执行指令,使用户失去对系统的控制。
为避免这种情况,可在用户程序段结尾加上一条INT 20H指令,或INT 3指令。
7)关于任务5DS:2000单元开始的5个字节内容,可用填充命令F给其赋值。
-F 2000 L5 01 02 03 04 05↙(在执行程序前用F命令给单元赋值)之后,运行任务5程序段,检查运行结果是否正确。
实验二利用DEBUG命令调试程序【实验目的】1.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
2.熟悉和掌握用DEBUG调试程序的方法。
【实验内容】1、编制程序,查找微机原理课程学生考试最高成绩及人数.P1082、统计一个数据块中负数的个数。
P111【预习要求】1.仔细阅读课本及相应教材。
2.参照程序框图编制源程序,准备好多组运算数据,以供校验。
【报告要求】1..写出算法或画流程图。
2.编写完整的汇编语言源程序3.整理运行正确的源程序,加上注释。
4.总结应用DEBUG调试程序的方法。
5.回答思考题。
五、【实验提示】可以把显示程序和加法程序都编成子程序的形式。
打开MASM文件夹,有四个文件,MASM.EXE,LINK.EXE,我们要用到。
a) 进入EDIT编辑环境建立和修改汇编源程序文件(文件名b) 要以.ASM结尾)c) 用MASM命令汇编源文件以产生相应的目标d) 文件(OBJ文件)e) 用LINK命令连接目标f) 文件以产生可执行文件(EXE文件)g) 用DEBUG调试、运行可执行程序。
实验三利用中断指令进行输入输出程序设计【实验目的】1.熟悉DOS的功能调用命令2.掌握基本DOS功能调用命令的使用3.掌握提示信息的使用方法及键盘输入字符串的用法。
【实验内容】1、编写程序,由键盘输入一串字符(包括字母和数字,以回车符结束),编程统计其中数字的个数,并从屏幕输出。
(课后习题39题)2、利用DOS系统功能调用实现人机对话。
P127【预习要求】1.仔细阅读课本中有关DOS功能调用INT 21H中的功能调用。
2.参照给定程序框图编制源程序。
3.回答思考题。
【报告要求】1.整理出经过运行正确的源程序,并加上注释。
2.写出算法或画流程图。
3.编写完整的汇编语言源程序4.实验结果分析和感想及建议实验四汇编语言程序设计综合实验【实验目的】1. 掌握汇编语言分支、循环结构程序设计方法及子程序的设计方法.2. 掌握利用DEBUG命令调试程序【实验内容】1. 自内存SCORE单元开始连续存放着10个学生的“微机原理”成绩,请编程做如下统计:①找出最高分和最低分送入MAX和MIN单元。