2014微机原理实验指导书1
- 格式:doc
- 大小:1.67 MB
- 文档页数:15
实验一初级程序的编写与调试一、实验目的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命令直接调出寄存器,来检查各寄存器内容是否正确。
《微机原理及接口技术》实验指导书适用专业:车辆工程(汽车电子技术方向)课程代码: 6010289学时: 10 学分: 3编写单位:交通与汽车工程学院编写人:赵玲审核人:唐岚审批人:孙仁云2013年3月目录实验一、MCS-51单片机汇编指令编程1实验二、MCS-51单片机汇编指令编程2实验三定时器/计数器实验实验四 I/O接口的应用实验五 A/D转换实验实验一 MCS-51单片机汇编指令编程1一、实验目的1、掌握循环结构程序设计方法。
2、了解汇编程序的编写、编译及调试。
二、实验设备EL-MUT-III型单片机实验箱,PC机及操作系统一套。
三、实验内容实现发光二极管每隔0.1s依次循环右移点亮。
NAME T1CSEG AT 0000H (由于该实验箱既可以开展单片机实验,也可以开展微机原理实验,其硬件设计与实际的单片机系统有一些小的调整,该句,实际就是 ORG 0000H的作用) LJMP STARTCSEG AT 4100H (ORG 0100H)START: MOV A,#0FEHLOOP: LCALL DELAYRL AMOV P1,AJMP LOOPDELAY: MOV R1,#125DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2DJNZ R1,DEL1RETEND实验接线:P1.0~P1.7接发光二极管L1~L8。
四、思考与练习1、补充完成程序里面的内容,实现0.1s的延时,并解释理由。
(本实验系统晶振为6MHZ)书上2、请问发光二极管是高电平还是低电平点亮?低3、如何修改程序实现每隔0.1s依次循环左移2位点亮。
程序loop阶段修改为LOOP:RR ARR AMOV P1,ALCALL DELAYJMP LOOP五、实验报告内容1、实验报告格式按照学院下发的统一实验报告用纸上面的要求手写完成。
2、报告里面必须包含:实验目的、实验设备、实验内容及实验相应的结果,并完成相应的思考题。
实验一系统认识与数码转换实验一、实验目的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)输入源程序,进行汇编、连接。
微机原理实验指导书硬件实验部分东华大学信息学院2014.12关于微机原理硬件部分实验的说明●硬件实验主要分为基础实验和综合设计实验两部分。
基础实验部分每个实验需完成各自的实验报告。
报告内容以每项实验的思考题内容为主。
报告内容具体要求为:1、实验名称、所需设备、实验要求;2、实验步骤简述3、思考题解答;4、不需要抄录实验指导书提供的范例程序,但需有思考题的程序的流程框图及完整的思考题程序代码,思考题程序程序需加上必要的注释。
5、思考题的程序在调试中出现的问题及解决过程。
(此项内容是报告检查重点)综合设计实验须按照设计要求,利用实验设备提供的软硬件条件设计一个简单的红绿灯模拟系统。
要求每小组完成硬件连线设计、连接,软件编程及调试,并提交相关的设计和调试报告。
系统运行情况需进行实际运行检查。
●基础实验必须完成,综合实验部分根据自身能力选做。
●实验中先完成基础实验部分,再做综合设计实验。
●硬件实验成绩按考勤情况(5%)、基本实验情况(85%)和综合设计实验情况(10%)综合评定。
一、实验设备及软件介绍第1部分硬件系统介绍1. CPU单元及外围芯片1)、微处理器:80862)、时钟频率:6MHz3)、存储器6264 系统RAM,地址范围 0~3FFFH,奇地址有效6264 系统RAM,地址范围0~3FFFH,偶地址有效27C64 系统ROM,地址范围 FC000~FFFFFH,奇地址有效27C256 系统ROM,地址范围 FC000~FFFFFH,偶地址有效4)、可提供的对8086的基本实验(1).简单I/O扩展实验(2).存储器扩展实验(3).CPLD地址译码实验(4).8255可编程并口实验(5).8253定时/计数器实验(6).A/D0809实验(7).D/A0832实验(8).8250可编程串口实验(9).8279显示器接口实验(10).8279键盘扩展实验(11).8259可编程中断控制器实验(12).8237DMA控制器实验5)、系统资源分配本系统采用可编程逻辑器件(CPLD)EPM7128做地址的编译码工作,可通过芯片的JTAG接口与PC机相连,对芯片进行编程,可完成系统器件,如监控程序存储器、用户程序存储器、数据存储器、系统显示控制器、系统串行通讯控制器等的地址译码功能,同时也由部分地址单元经译码后输出(插孔CS0---CS5)给用户使用,他们的地址固定,用户不可改变。
实验一系统认知实验实验目的:了解汇编语言的设计、编写和调试程序的方法,掌握DEBUG的使用。
实验设备:装有DOS系统和MASM5.0的微机一台,或TDN86/88微机原理教学实验系统一台。
实验内容:编程实现在屏幕上显示一个大写字母“A”或字符串“HOW ARE YOU?”,用DEBUG调试程序实验要求:1、上机前做好充分准备,包括源程序清单、调试步骤等;2、用DEBUG来调试程序,熟悉DEBUG的使用。
实验步骤:1、编写程序并输入,检查无误后,经汇编、连接后运行,用DEBUG装入。
2、用U命令反汇编程序,应用R、G等命令,观看运行情况。
3、用D、E、A等命令查看、修改源数据,用G命令查看运行结果。
4、用Q命令退出DEBUG上机过程1.建立源文件使用EDIT软件,得到扩展名为ASM的汇编语言源程序文件。
(扩展名.asm 勿忘加!)2.汇编源程序使用汇编程序MASM对源程序进行汇编,生成OBJ、LST和CRF文件(后两种一般不需要,可直接回车)。
如程序有错,可以根据提示信息,重新编辑、汇编源程序,直到没有严重错误为止。
3.连接程序使用连接程序LINK,对汇编程序产生的目标文件进行连接,产生可执行的程序EXE。
4.调试或运行程序具体过程如下:1. 编辑C:\MASM>EDIT 文件名.ASM2. 汇编C:\ MASM >masm 文件名.ASM3. 连接C:\ MASM >link 文件名.obj4. 调试C:\ MASM >debug 文件名.exe-U 反汇编,记下程序首地址和结束地址-D 段地址:偏移地址察看内存单元内容-E 段地址:偏移地址修改内存单元内容:空格修改下一个, 回车结束修改-G=起始地址结束地址运行程序参考源程序:(1) 屏幕上显示一个大写字母“A”STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AH, 02HMOV DL,41HINT 21HINT 20HCODE ENDSEND START(2) 屏幕上显示字符串“HOW ARE YOU?”DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验二分支程序设计实验一、实验目的1.掌握分支程序的结构。
第一部分汇编语言程序设计实验一汇编语言程序设计基础[实验目的]1.学习和掌握汇编语言程序的基本结构和上机过程。
2.学习和掌握顺序程序设计的方法3.学习和掌握汇编语言程序的调试方法。
4.学习EMU8086和MASM FOR WINDOWS软件的使用。
[实验要求]1、上机前要做好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。
2、上机时要遵守实验室的规章制度,爱护实验设备。
要熟悉与试验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序)的使用方法。
在程序的调试过程中,有意识的学习及掌握程序的各种操作命令以便掌握程序的调试方法及技巧。
[实验器材]微型计算机、WINDOWS操作系统、DOS系统、DEBUG程序、MASM 5.0[实验内容]1.编写程序,在屏幕上分行显示自己的姓名、学号和欢迎信息,每个信息显示在不同的行。
2.编写程序,通过键盘输入0——9之间的一个数字,利用查表法计算其平方。
3.在数据段定义x、y、res1、res2、res3、res4,分别计算x和y的和、差、积、商,分别存放在变量res1、res2、res3、res4中,变换不同的x和y的值,进行计算,分析和记录计算结果以及相关标志位的状态。
验证程序是否正确。
4.在数据段定义x、y、res1、res2、res3、res4,分别计算x和y的与、或、非、异或的结果,分别存放在变量res1、res2、res3、res4中,变换不同的x和y的值,进行计算,分析和记录计算结果以及相关标志位的状态。
验证程序是否正确。
5.将字节型变量x和y交换。
[实验步骤]1.编辑源程序。
(注意:保存文件时文件的扩展名必须为.asm,最好将文件保存在自己的文件夹下)。
2.汇编源程序,应用MASM.EXE对源程序进行汇编,生成.obj的目标文件和.lst的列表文件,通过列表文件查看并记录其中一个程序的目标代码。
3.连接目标程序,应用LINK.EXE对目标模块进行连接,生成 .EXE的可执行文件,执行可执行文件,验证程序功能。
微机原理实验指导书郑州大学电气工程学院目录实验一比较字符串实验 (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)基于PC的8086汇编程序实验 (2)2.1 实验一调试程序debug.exe的使用 (2)2.2 实验二汇编与宏汇编程序 (12)2.3 实验三汇编程序设计1 (14)2.4 实验四汇编程序设计2 (15)2.5 实验五汇编程序设计3 (16)实验概述《微机原理及应用》的实验项目由两大部分组成:软件部分是基于PC的8086汇编程序实验,这一部分的实验不需要使用实验箱,直接在PC机上进行。
进行汇编程序实验,需要PC机安装相应的汇编程序软件包,例如microsoft 的宏汇编或其它类似汇编软件。
通过这一部分的实验使学生掌握汇编程序的编写、汇编、连接与调试过程,同时进行一些基于PC的汇编源程序的编写。
在汇编源程序中,可以使用微机的BIOS功能调用与DOS功能调用。
硬件部分(略)1、常用MS-DOS命令功能1.1如何切换Win与DOS环境(1) “开始”-“所有程序”-“附件”-“命令提示符”;若要实现全屏显示可设置“命令提示符-属性”-“选项”-“全屏”(2) 在DOS环境下退回Win:EXIT1.2常用DOS命令(1) 盘切换C:\>D: 回车(2) DIR (directory)(DIR /p/w):列当前文件夹下文件与文件夹(3) MD (make directory):在当前文件夹下新建文件夹(4) CD(change directory):目录切换CD\ :回到根目录CD.. :返回前级目录(5) RD(remove directory):可在前一级目录下删除某空目录(6) DEL(delete):删除文件DEL SY1_1.ASM ;DEL *.*(7) COPY :拷贝文件COPY SY1_1.ASM SY1_2.ASM(8) REN(rename):文件重命名REN MY1_1.ASM SY1_1.ASM基于PC的8086汇编程序实验本章将介绍PC机上的debug.exe的使用,以及采用宏汇编软件的使用。
微机原理及其接口技术实验指导书目录第一章汇编语言程序上机实验快览 (1)1.1汇编语言程序上机应具备的工具软件 (1)1.2调试程序(DEBUG)功能简介 (1)1.3预习报告格式 (3)1.4实验报告格式 (3)第二章软件实验 (4)实验一D EBUG程序的使用 (4)实验二汇编语言上机环境及基本步骤 (8)实验三两个多位十进制数相加的实验 (11)实验四循环结构程序设计 (14)实验五数组排序实验 (15)实验六子程序设计 (16)第三章硬件实验 (19)3.1DICE-8086K实验箱使用说明 (19)3.2系统安装与使用 (21)实验一存储器读写实验 (22)实验二8259单级中断控制器实验 (25)实验三8255A并行口实验 (31)实验四定时器/计数器 (33)实验五数码管显示实验 (35)第一章汇编语言程序上机实验快览1.1汇编语言程序上机应具备的工具软件汇编语言程序上机操作,必须经过文件的“建立-汇编-连接-执行”四个阶段。
因此系统磁盘上还应具备下列工具软件。
1.全屏幕编辑程序。
用以将程序键入内容,经编辑后生成源文件(.ASM)存盘。
常用的编辑程序有EDIT.EXE,SK.EXE,WORD97。
2.宏汇编程序,如MS的MASM.EXE,用以将源文件(.ASM)汇编生成二进制代码的目标文件(.OBJ)、列表文件(.LST)、及符号交叉引用表文件(.CRF)。
3. 连接程序LINK.EXE。
用以将目标文件(.OBJ)与欲使用的库文件(.LIB)及其它目标模块,连接装配生成一个可执行文件(.EXE)、及各段空间分配的列表文件(.MAP)。
4.调试程序。
用以对.EXE或.COM文件进行调试,排错。
值得提出的是,人工输入的现成程序,或自编程序,难免不出现键入错误、疏漏错误、语法错误及逻辑错误。
虽然在静态自查及汇编阶段均可被查出,但程序内在的逻辑功能性错误,还必须借助调试工具,在监测环境下动态运行程序时才能表露出来。
实验一系统操作及程序调试举例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单元开始的数据区中。
微型计算机原理与接口技术实验指导书陈裕国编武汉工程大学电气信息学院自动化教研室二0一四年二月实验一汇编软件使用与基本编程实验一、实验目的1. 熟悉8086汇编语言程序设计的实验环境。
2. 掌握汇编语言程序设计的上机步骤,初步学会利用Turbo Debugger 调试工具来调试汇编语言程序。
二、实验环境汇编语言程序设计的实验环境如下:1. 硬件环境微型计算机(Intel x86 系列CPU)1台。
2. 软件环境·Windows XP操作系统。
·任意一种文本编辑器,如EDIT、NOTEPAD(记事本)等。
·汇编程序,如MASM.EXE或TASM.EXE。
·连接程序,如LINK.EXE或TLINK.EXE。
·调试程序,如DEBUG.EXE或TD.EXE。
本实验指导中,文本编辑器使用NOTEPAD(记事本),汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用TD.EXE。
三、上机步骤1.建立汇编语言程序设计的实验环境(1)通过WindowsXP的资源管理器找到D盘的根目录,在D盘的根目录窗口中点击鼠标右键,在弹出的菜单中选择“新建”→“文件夹”选项,新建一个文件夹,并把新建的文件夹命名为ASM。
该目录就为以后源程序的存放目录。
(2)把MASM.EXE、LINK.EXE、TD.EXE都拷贝到新建的ASM目录中。
2.建立ASM源程序在WindowsXP桌面的“开始”菜单中选择“程序”→“附件”→“记事本”选项,屏幕上出现记事本的编辑窗口。
在编辑窗口输入源程序代码。
在输入、编辑源程序的过程中,可充分利用记事本的“编辑(E)”菜单中“剪切”、“复制”、“粘贴”和“撤消”等功能。
源程序输入完毕后,选择记事本的“文件(F)”菜单,用其中的“保存(S)”功能将文件存盘。
这时会弹出一个“另存为”窗口,在这个窗口中将保存源程序的路径选择为前面建立的D:\ASM目录,“保存类型(T)”选择为“所有文件(*.*)”,文件名为HELLO.ASM(本例为D:\ASM\HELLO.ASM),如图11-1所示。
实验参考程序代码:DATA SEGMENTONE DB 20 DUP(32), 'HELLO!',7,13,10 COUNT EQU $-ONEDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START: MOVAX, SEG DATA MOV DS,AXMOV SI,OFFSET ONE MOVCX,COUNT NEXT: MOV DL,[SI] MOV AH,2 INT 21H INC SILOOPNEXT3.用MASM.EXE 汇编源程序产生目标文件 源文件HELLO.ASM 建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ 文件)。
在WindowsXP 桌面上的“开始”菜单中选择“程序”→“附件”→ “命令提示符”选项,打开“命令提示符”窗口。
输入“D:”并回车,进入D 盘的根目录,接着输入“CD\ASM ”进入前面新建的ASM 目录。
输入“MASM HELLO.ASM ”并回车,MASM 程序会提示让你输入目标文件名(Object Filename),并在方括号中显示默认的目标文件名[HELLO.OBJ]。
此时可按ENTER 键确认目标文件名为默认的目标文件名HELLO.OBJ,也可重新输入新的目标文件名(建议输入目标文件的完整路径名,如:D:\ASM\HELLO.OBJ)。
后面的两个提示为可选项,可直接按ENTER 键跳过,也可输入汇编时产生的列表文件名(如HELLO.LST )和交叉文件名(HELLO.CRF)。
注意,若打开MASM 程序时未给出源程序名,则MASM 程序会首先提示让你输入源程序文件名(Source Filename ),此时输入源程序文件名HELLO.ASM 并回车,然后进行的操作与上面完全相同操作时的屏幕显示如图11-2所示。
如果源程序有错误,汇编程序MASM 会指出错误所在的行号和错误的原因。
源程序的错误类型有两种类型:(1)警告错误(Warning Errors )。
警告不影响程序的运行,但可能会得出错误的结果。
图11-1 记事本的文件“另存为”窗口(2)严重错误(Severe Errors)。
出现错误,MASM 将无法生成OBJ 文件。
在错误信息中,圆括号里的数字为有错误所在的行号,后面给出了错误类型及具体错误原因。
如果汇编时产生很多的错误,以至于出现滚屏,不易查看汇编程序指出的错误信息,此时需要用记事本打开(“文件类型(T )”选择为“所有文件(*.*)”)汇编时产生的列表文件HELLO.LST 来查看。
注意,汇编程序只能指出程序的语法错误,而无法指出程序逻辑的错误。
修改源程序中的错误并保存文件,然后重新对源程序进行汇编。
如果汇编时没有错误,MASM 就会在当前目录下建立一个HELLO.OBJ 文件(名字与源文件名相同,只是扩展名不同)。
4.用LINK.EXE 产生EXE 可执行文件在上一步骤中,汇编程序产生的是二进制目标文件(OBJ 文件),它是不可执行的。
要想使我们编写的程序能够运行,还必须用连接程序(LINK.EXE )把OBJ 文件连接为可执行的EXE 文件。
在“D:\ASM>”命令提示符下输入“LINK HELLO.OBJ ”并回车,进入LINK 程序后,连接程序会提示让你输入可执行文件名(Run File),并在方括号中显示默认的可执行文件名[HELLO.EXE]。
此时可按ENTER 键确认可执行文件名为默认的可执行文件名HELLO.EXE ,也可重新输入新的可执行文件名(建议输入可执行文件的完整路径名,如:D:\ASM\HELLO.EXE)。
后面的三项提示为可选项,可直接按ENTER 键跳过;对于本例,只需输入定位图文件名HELLO.MAP 即可。
注意,若打开LINK 程序时未给出目标程序名,则LINK 程序会首先提示让你输入目标程序名(Object Moodules ),此时输入目标程序名HELLO.OBJ 并回车,然后进行的操作与上面完全相同。
如果没有错误,LINK 就会建立一个HELLO.EXE 文件。
如果OBJ 文件有错误,LINK 会指出错误的原因。
本例中,对于无堆栈警告(warning :no stack segment)信息,可以不予理睬,它不影响程序的执行。
当然,也可以在本例的程序中加入一个堆栈段,来消除这一警告错误信息,读者不妨试试。
操作时的屏幕显示如图11-3所示。
对于LINK 同时建立的HELLO.MAP 文件,为包含程序连接的信息以及各段的地址信息,可同样用记事本打开查看。
图11-2 汇编源程序操作时的屏幕显示5.执行程序生成了HELLO.EXE 文件后,就可以直接在命令提示符下运行此程序。
在“D:\ASM>”命令提示符下输入“HELLO ”并回车。
本例程序的功能是在屏幕上输出显示20个空格和“HELLO!”字符并且回车、换行,自动返回DOS 。
如果源程序没有功能性错误,正确的结果会显示在屏幕上。
如果程序不显示结果,我们如何发现程序的功能性问题呢?这时,我们就要使用TD.EXE 调试工具来查看运行结果。
实际上,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时需要使用TD.EXE 。
6.学习使用TD.EXE在“D:\ASM>”命令提示符下键入“TD HELLO.EXE ”并回车。
TD 启动后,呈现的是一个具有窗口形式的用户界面,如图11-4所示。
窗口分为代码区、数据区、寄存器区、堆栈区和标志位区。
在5个区域中,光标所在的区域称为当前区域。
用户可以使用Tab 键或Shift+Tab 键切换当前区域,也可以在相应的区域中单击鼠标左键选中某区为当前区。
在代码区和堆栈区分别显示一个称为箭头的特殊标志,代码区中的箭头标志指示出当前程序指令的位置(CS:IP),堆栈区中的箭头标志指示出当前堆栈指针位置(SS:SP) 。
然后,按以下步骤操作:图11-3 连接目标程序操作时的屏幕显示(1)查看代码区汇编指令,逐行与HELLO.ASM源程序比较,看看源程序中那些语句有机器码,那些语句没有机器码。
记录源程序中的SEG DATA、OFFSET ONE、COUNT、NEXT在HELLO.EXE中的具体值并加以说明。
(2)按F8键(单步运行)两次,查看并记录寄存器区AX和DS的变化。
(3)按Tab键切换当前区域,直至当前区域为数据区(也可以在相应的区域中单击鼠标左键选中某区为当前区)。
然后按Alt+F10组合键激活数据区局部菜单(也可以在相应的区域中单击鼠标右键激活该区局部菜单),选中Goto命令,输入DS:0000H并回车,观看数据区内容的变化,并留意数据区右边ASCII码字符区的内容,与HELLO.ASM源程序中ONE DB 20 DUP(32), 'HELLO!',7,13,10 语句对比。
根据观察结果画出本例程序的数据段,标注起始地址、段末地址,以及存储单元的内容。
并记录下此时所有寄存器的内容。
(4)继续不断地按F8键,观看寄存器区、标志位区和堆栈区的不断变化,并注意代码区箭头标志位置的变化。
直至代码区箭头标志的位置移至 MOV AH,4CH 语句时,停止按F8键。
记录下此时所有寄存器的内容,与前面记录的寄存器内容比较并分析发生的变化。
START: MOV AX, SEG DATA;执行前:AX= 0000 执行后:AX= 5B6B MOV DS,AX;执行前:AX= 5B6B DS= 5B5B执行后:AX= 5B6B DS= 5B6B MOV SI,OFFSET ONE;执行前:SI = 0000 执行后:SI = 0000MOV CX,COUNT;执行前:CX= 0000 执行后:CX= 001D(以下是循环,按F8键单步运行,观看每次循环各条指令运行结果,分析为什么?)NEXT: MOV DL,[SI] ;执行前:DL = 00 SI = 0000执行后:DL = 20 SI = 0000MOV AH,2;执行前:AH= 5B 执行后:AH = 02INT 21H;执行前:AH= 02 执行后:AH = 02INC SI;执行前:SI = 0000 执行后:SI = 0001LOOP NEXT;执行前:CX= 001D 执行后:CX= 0000(5)代码区箭头标志位置移至 MOV AH,4CH 语句时,按ALT+F5键查看被调试程序的显示输出。
7.熟练使用TD.EXE按ALT+F5键切换到TD用户界面,用FILE菜单OPEN项重新载入可执行文件HELLO.EXE,重复上面⑴~⑶步骤。