debug实验指导书.doc_第1页
debug实验指导书.doc_第2页
debug实验指导书.doc_第3页
debug实验指导书.doc_第4页
debug实验指导书.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术实验指导书许昌学院电气信息工程学院二九年十月前言微型计算机原理及应用是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题解决问题的能力。本实验指导书是微型原理与接口技术一书的配套教材。本实验指导书主要包括汇编语言上机操作、汇编程序调试方法及软件部分实验。对于每一个实验都给出了实验目的实验内容预习要求报告要求实验提示等。实验提示部分我们仅给出部分文字提示和参考流程图,以作为学生自己编程时的参考。我们主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的结果。这样做实验,才能真正有收获,才能真正提高分析问题和解决问题的能力。本实验指导书在编写的过程中,得到了本系的领导和老师的支持指导和帮助,在此表示衷心的谢意。由于编者水平有限,书中不妥或错误之处在所难免,欢迎大家在使用过程中多多提出宝贵意见。 李耀辉、吴泽 2009年10月08日实验须知一、预习要求1. 实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。2. 每次实验前做好充分的预习,对所需预备知识做到心中有数。3. 实验前应编好源程序,并对调试过程、实验结果进行预测。二、实验设备PC微型计算机1台(配置相关的汇编程序及汇编应用软件)二、实验要求1. 实验课请勿迟到,缺席。2. 爱护设备,保持清洁,不随意更换设备。3. 认真完成实验任务,实验结果经教师检查。4. 做硬件实验时,严禁带电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行,并注意防止导线堵塞插孔。5. 发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。6. 实验完毕,请整理实验设备,再离开实验室。三、报告要求每次实验后,应递交一份实验报告,报告中应包含下列内容:1. 实验名称、实验人姓名、学号、班级,所用设备号。2. 实验目的、任务。3. 实验应画出各任务的完整流程图。4. 画出各任务程序流程图。5. 写出实验调试情况,包括上机时遇到的问题及解决办法、实验结果分析等,并附上调试好的程序清单(应加适量注释)。6. 总结实验中的心得体会,提出对实验内容、方案等的建议、意见或设想等。目 录实验一 汇编语言上机环境的熟悉和DEBUG命令使用1实验二 数据传送指令9实验三 算术逻辑运算及移位指令12实验四 串操作指令16实验五 分支及循环程序设计19实验六 子程序及DOS功能调用27附录1 Masm for Windows集成实验环境32附录2 ASCII码表36附录3 DOS 功能调用表39实验一 汇编语言上机环境的熟悉和DEBUG命令使用一实验目的1.熟悉程序的汇编过程以及Masm for Windows 6.0的使用。2.学习使用DEBUG中的各种命令。3.掌握用DEBUG调试自编程序的方法,为以后实验打下基础。二实验内容1. 熟悉汇编语言的编译环境。1) DOS下的编译环境(课本P87)。2) Windows下的编译环境(Masm for Windows 6.0)。2. 熟悉使用将源程序转换为可执行程序。;Hello World program (hello.asm)DATA SEGMENTMSG DB Hello, World ! ,0AH, 0DH, $DATA ENDSSTACKSEGMENT DB 100H DUP(?)STACK ENDSCODESEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART PROC FAR PUSH DS XOR AX, AX PUSH AX MOV AX, DATA MOV DS, AX MOV AH, 9 MOV DX, OFFSET MSG INT 21H RETSTART ENDPCODE ENDSEND START注:找出本程序与Masm for Windows 6.0的example文件下的hello.asm的区别。3. 用DEBUG调试、运行可执行程序。1) 进入DEBUG后,首先用命令R查看当前DS和IP寄存器内容,记录此值。2) 学习R,D,A,U,T,G,Q命令的使用。3) 用命令A汇编下列指令,并判断指令正误并说明原因。(1) ROR AX,8(2) LEA DI,AX(3) MOV DS,2010(4) PUSH AL(5) OUT 900,AL(6) MOV BX,0(7) MOV CS, AX(8) MOV BP, SP(9) MOV IP, AX(10) MOV AX, 6BXSI4) 用A命令汇编下列程序段,完成将DS:2000开始的5个字节内存内容相加,并把相加的结果存放在DS:2005内存单元中,将程序写到硬盘上,然后用DEBUG调试并运行该程序,查看运行结果,观察程序段能否完成指定功能,若不能,说明原因。 MOV CX,5 MOV AL,0 MOV BX,2000NEXT:ADD AL,BX INC BX LOOP NEXT MOV BX,AL INT 3三预习要求1.仔细阅读实验一后的【实验提示】及【DEBUG的启动及其基本命令的使用】中的内容2.“汇编语言上机操作过程及程序调试技术”内容。3.根据实验要求,对各项结果进行预测。四实验报告1.写出hello.asm程序清单、程序执行及调试过程中寄存器(含FR)的内容。2.举例写出利用dubug调试中你所用的命令的功能。3.分析任务3中各条指令错误原因。4.写出做完本实验的心得体会。五实验提示1.DEBUG的进入(1)如果是首次进入DEBUG编程,则只要在DOS提示符下键入DEBUG ,即可进入DEBUG环境,显示提示符“-”。(2)如果要对某个程序使用DEBUG进行调试,只要在DOS提示符下键入DEBUG 文件名,即可进入DEBUG环境,显示提示符“-”。2.程序的汇编与反汇编(1)源程序可以在DEBUG下,用汇编命令A输入到内存中,只需在DEBUG提示符“-”下,键入汇编命令A ,并在显示“段寄存器地址:偏移地址”后面键入你自己编写的程序,每键入一条,按一次回车键。-A 127B:0100MOV CX,5 127B:0103MOV AL,0 127B:0105MOV BX,2000 (2)如果进入DEBUG时是使用“DEBUG 文件名”进入的,那么在进入DEBUG状态后,可用反汇编命令U,将调入的程序显示出来:-U 127B:0100B90500MOV CX,5127B:0103B000MOV AL,0127B:0105BB0020MOV BX,20003.在DEBUG状态下,对所编写文件存盘的步骤 给程序命名-N 文件名.COM 将文件长度放入BX、CX中(高位放入BX,低位放入CX中)-R BX (注意!由于文件长度一般较小,所以切记BX中赋0值)-R CX (文件最末偏移地址减去文件开始的偏移地址即文件长度) 用写盘命令W把正在调试的内存中程序写入磁盘中-W 地址(文件开始地址)退出DEBUG状态用Q命令:-Q 4.在DEBUG状态下,建议使用DOS分配给用户的内存可用区在DEBUG状态下,用户可对所有寄存器、RAM内存随意查看和修改,但由于对DOS操作系统在内存中存放情况不了解,可能会将存放有操作系统程序的内存内容破坏,从而可能引起系统的异常,出现死机现象,故建议使用DOS分配给用户的内存可用区,其低端地址是刚进入DEBUG时,用命令R查看到的DS:IP。5.用连续执行命令G应注意问题用连续执行命令G执行程序时,注意给出执行程序的首地址,并注意执行的程序中有返回DEBUG功能的程序段,如指令INT 20H或断点设置INT 3,否则发出命令后,很容易出现死机,原因是无返回程序段使系统返回命令接受状态,CPU将不断到内存中取指令、执行指令,使用户失去对系统的控制。为避免这种情况,可在用户程序段结尾加上一条INT 20H指令,或INT 3指令。六、DEBUG的启动及其基本命令的使用DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。1、DEBUG程序的启动在DOS提示符下,可键入命令:CDEBUGd:path文件名 参数1参数2其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。2、DEBUG的主要命令(1)汇编命令A,格式为:-A地址该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。(2)反汇编命令U,有两种格式:1)-U地址该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或 U 04BA:0100 L9此二命令是等效的。(3)运行命令G,格式为:-G =地址1地址2地址3其中地址1规定了运行起始地址,后面的若干地址均为断点地址。(4)追踪命令T,有两种格式:1)逐条指令追踪:-T=地址该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。2)多条指令追踪:-T=地址值该命令从指定地址起执行n条命令后停下来,n由值确定。(5)显示内存单元内容的命令D,格式为:-D地址或-D范围(6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址 内容表 例如:-E 2000:0100 F3 “XYZ” 8D其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。2)逐个单元相继地修改:-E地址例如:-E 100:18E4:0100 89.78此命令是将原100号单元的内容89改为78。78是程序员键入的。(7)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-RR命令显示中标志位状态的含义如下表所示:标 志 名置 位复 位溢出Overflow(是/否)OVNV方向Direction(减量/增量)DNUP中断Interrupt(允许/屏蔽)EIDI符号Sign(负/正)NGPL零Zero(是/否)ZRNZ辅助进位Auxiliary Carry(是/否)ACNA奇偶Parity(偶/奇)PEPO进位Carry(是/否)CYNC2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如打入:-R AX系统将响应如下:AX FIF4:表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE CY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如 OV DN EI NG ZR AC PE CY-PONZDINV(8)命名命令N,格式为:-N 文件名此命令将文件名格式化在CS:5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。(9)装入命令L,它有两种功能:1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:-L 地址 驱动器 扇区号 扇区数2)装入指定文件,格式为:-L 地址此命令装入已在CS:5CH中格式化的文件控制块所指定的文件。在用L命令前,BX和CX中应包含所读文件的字节数。(10)写命令W,有两种格式:1)把数据写入磁盘的指定扇区:-W 地址 驱动器 扇区号 扇区数2)把数据写入指定文件中:-W 地址此命令把指定内存区域中的数据写入由CS:5CH处的FCB所规定的文件中。在用W命令前,BX和CX中应包含要写入文件的字节数。(11)退出DEBUG命令Q,该命令格式为Q它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。实验二 数据传送指令一实验目的1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。2、掌握数据在内存中的几种寻址方式和掌握简单指令的执行过程。二实验内容1、用masm和link 对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行(或通过Masm for Windows 6.0实现)。用单步执行的方法,分析每条指令源地址的形成过程。问题:用表格的形式写出AX在程序中的内容的变化?DATA SEGMENT ORG 0300H A DB 12H,23H,34H,45H,56H,67H,78H,89H,9AHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, BX MOV AX, 0300H MOV AX, 0300H MOV AX, BX MOV SI,2 MOV AX, 0001BX MOV AX, BXSI MOV AX, 0001BXSI MOV AH, 4CH INT 21H CODE ENDS END START2、用查表的方法计算平方值。设09的平方值连续存放在以TABLE开始的存储区域中,求VARX单元内容(设为09中的某个数)的平方值,要求结果放在RSLT单元中。用masm.exe和link.exe对源程序进行汇编程和连接(或利用Masm for Windows 6.0),用DEBUG调试程序。问题:根据查表程序所必备的条件以及查表运行的过程及结果分析该程序的执行情况。改变VARX的值,看AL中的值是否改变。;找到0-9中数5的平方,并放入RSLT中DATA SEGMENT VARX DB 5 RSLT DB ? TABLE DB 0,1,4,9,16,25,36,49,64,81 ;0-9的平方DATA ENDSSTACK SEGMENT DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART PROC FAR PUSH DS MOV AX, 0 PUSH AX ;保证DOS返回 MOV AX, DATA MOV DS, AX LEA BX, TABLE MOV AL, VARX MOV AH, 0 ADD BX, AX MOV AL, BX MOV RSLT, AL RET START ENDPCODE ENDS END START三实验要求实验前做好充分准备,包括汇编程序清单、调试方法及对程序的分析。四实验报告1、程序说明:说明程序的功能、结构。2、调试说明:包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、写出源程序清单和执行结果,并对所提问题进行书面回答。实验三 算术逻辑运算及移位指令一实验目的1学习算术运算及移位指令的用法。2.了解标志寄存器各标志位的意义和指令对它的影响。3将完整的程序用masm for Windows6.0运行并调试汇编语言程序的过程。二实验内容实验程序段及结构表格如下: 表3-1标志位CFZFAFPFSFOF程序段1:MOV AX, 1018HMOV SI, 230AHADD AX, SIADD AL, 30HMOV DX, 3FFHADD AX, BXMOV 20H, 1000HADD 20H, AXPUSH AXPOP BX000000表3-2标志位CFZFAFPFSFOF程序段2:MOV AX, 0A0AHADD AX, 0FFFFHMOV CX, 0FF00HADC AX, CXSUB AX, AXINC AXOR CX, 0FFHAND CX, 0F0FHMOV 10H, CX000000表3-3标志位CFZFAFPFSFOF程序段3:MOV BL, 25HMOV BYTE PTR10H, 4MOV AL, 10HMUL BL000000表3-4标志位CFZFAFPFSFOF程序段4:MOV WORD PTR10H, 80HMOV BL, 4MOV AX, 10HDIV BL000000表3-5标志位CFZFAFPFSFOF程序段1:MOV AX, 0DEC AXADD AX, 3FFFHADD AX, AXNOT AXSUB AX, 3OR AX, 0FBFDHAND AX, 0AFCFHSHL AX, 1RCL AX, 1000000三实验要求1.实验前要认真复习8086指令系统中的算术逻辑类指令和移位指令。2.做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。3.按要求在实验前编写好实验中的程序段。四实验报告1、整理出运行正确的各题源程序和表格内的运行结果,写入实验报告。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、总结算术逻辑类指令和移位指令对状态标志位的影响。实验四 串操作指令一实验目的1、熟悉串操作指令的功能及串操作的使用方法。2、了解汇编语言的基本程序结构。3、熟悉在PC机上汇编程序的全过程。二实验内容1.编写程序框架,定义串操作指令要求的数据段或附加数据段,并定义代码段。2.在代码段中输入以下程序并运行之,回答后面的问题。CLDMOV DI, 1000HMOV AX, 55AAHMOV CX, 10HREP STOSW上述程序经汇编、链接生成可执行文件并执行后:(1)从ES:1000H开始的16个字单元的内容是什么?(2)DI=?, CX=? 并解释其原因。3.在上题的基础上,在代码段在输入以下程序段并运行之,回答后面的问题。MOV SI, 1000HMOV DI, 2000HMOV CX, 20HREP MOVSB程序段执行后:(1)从ES:2000H开始的16个字单元的内容是什么?(2)SI=?, DI=?, CX=? 并分析之。4.在以上两题的基础上,在代码段在输入以下三段程序段并运行之。程序段1:MOV SI, 1000HMOV DI, 2000HMOV CX, 10HREPZ CMPSW程序段1执行后:(1)ZF=?, 根据ZF的状态和CX的内容,你认为两个串是否比较完了?(2)SI=?, DI=?, CX=? 并分析之。程序段2:MOV BX, 2008HMOV WORD PTR BX, 4455HMOV SI, 1000HMOV DI, 2000HMOV CX, 10HREPZ CMPSW程序段2执行后:(1)ZF=?,根据ZF的状态和CX的内容,你认为两个串是否比较完了?(2)SI=?, DI=?, CX=? 并分析之。程序段3:MOV AX, 4455HMOV DI, 2000HMOV CX, 10HREPNZ SCASW程序段3执行后:(1)ZF=?,根据ZF的状态和CX的内容,你认为在串中是否找到了4455H?(2)SI=?, DI=?, CX=? 并分析之。5.从DS:1000H开始存放一个字符串“This is a string”,要求把这个字符串从后向前传送到DS:2000H开始的内存区域内(即传送后,DS:2000H单元中的内容为“gnirts a si sihT”),是编写程序验证之。三. 编程提示实验内容的第5部分要用到ORG oprd 指令。四实验要求实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。五实验报告1、整理出运行正确的各题源程序及运行结果,对结果进行分析。2、简要说明执行串操作指令之前应初始化哪些寄存器和标志位。3、写出源程序清单和执行结果,并总结串操作指令的用途及使用方法。 实验五 分支及循环程序设计一实验目的1、掌握分支及循环程序设计的基本思路和方法。2、会利用常用的分支和循环指令编写一些简单的程序。二实验内容1.熟悉分支及循环程序的设计思想和方法。1)分支程序的设计思路:2)循环程序的设计思路: 结束 初始化 循环的初始状态 循环体 循环的工作部分及修改部分 计数控制循环条件控制循环修改部分控制条件YN2.验证课本P103例4-37、P104例4-38、P105例4-39 、P107例4-40及P108例4-41。1)P103例4-37试编写程序,实现符号函数:DATA SEGMENT XX DW 12 YY DW ?DATA ENDSSTACK SEGMENT DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: PUSH DS XOR AX, AX PUSH AX ;保证DOS返回 MOV AX, DATA MOV DS, AX MOV AX, XX CMP AX, 0 JGE BIGER MOV YY, 0FFFFH JMP EXITBIGER: JE EQUPER MOV YY, 1 JMP EXITEQUPER: MOV YY, 0EXIT: MOV AX, YY RETCODE ENDS END START2)P104例4-38比较无符号数X1与X2的大小,把其中的书存入MAX单元。DATA SEGMENT SOURCE DB X1, X2 MAX DB ?DATA ENDSSTACK SEGMENT DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV AL, SOURCE CMP AL, SOURCE+1 JNC BRANCH MOV AL, SOURCE+1 BRANCH: MOV MAX, AL MOV AX, 4C00H ;DOS返回的另外一种方法 INT 21HCODE ENDS END START3)P105例4-39将内存中某一区域内的数据块传送到另外一个区域中去。DATA SEGMENT STR DB 1000 DUP(?) ;源操作数与目的操作数均在此空间 STR1 EQU STR+7 ;数据块的起始地址偏移量(假设) STR2 EQU STR+25 ;目的数据区的起始地址偏移量(假设) STRCOUNT EQU 50 ;源数据块的字节数(假设)DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK ES:DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AX MOV CX, STRCOUNT MOV SI, STR1 MOV DI, STR2 CLD PUSH SI ADD SI, STRCOUNT-1 CMP SI, DI ;判断源地址+数据块长度是否大于目的地址 POP SI ;注意不要改变SI的值 JL OK STD ADD SI,STRCOUNT-1OK: REP MOVSB MOV AX, 4C00H ;DOS返回的另外一种方法 INT 21HCODE ENDS END START5) P107例4-40,编写程序完成10个数的求和:。DATA SEGMENT BUFFER DW 1,2,3,4,5,6,7,8,9,10 SUM DW ?DATA ENDSSTACK SEGMENT DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV AX, 0 MOV DI, OFFSET SUM MOV BX, OFFSET BUFFER MOV CX, 10LOOP1:ADD AX, BX INC BX INC BX DEC CX JNZ LOOP1 MOV DI, AX MOV AX, 4C00H INT 21HCODE ENDSEND START5)P108例4-41,给定一串16位数,找出其中大于零、等于零和小于零的个数。DATA SEGMENT BUFF DW 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 COUNT EQU $-BUFF PLUS DB ? ZERO DB ? MINUS DB ? DATA ENDSSTACK SEGMENT DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATABEGIN: MOV AX, DATA MOV DS, AX MOV CX, COUNT SHR CX, 1 MOV DX, 0 MOV AH, 0 LEA BX, BUFF AGAIN:CMP WORD PTR BX, 0 JAE PLU INC AH JMP NEXT PLU: JZ ZER INC DL JMP NEXT ZER: INC DHNEXT: INC BX INC BX LOOP AGAIN MOV PLUS, DL MOV ZERO, DH MOV MINUS, AH MOV AX, 4C00H INT 21HCODE ENDSEND BEGIN三编程提示可以通过debug调试命令进行程序的验证,也可以利用一些简单的DOS功能调用进行显示验证。四实验要求实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。五实验报告1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。实验六 子程序及DOS功能调用一实验目的1、掌握子程序(过程)的结构、设计及调试方法。2、掌握常用DOS功能调用的方法。二实验内容1.熟悉分支及循环程序的设计思想和方法。过程名PROC NEAR|FAR;过程体过程名ENDP2.了解常用DOS功能的调用方法(INT 21H)。1)输入单个字符DOS功能号:01H;出口参数:AL=所输入的ASCII码;功能:等待用户从键盘输入一个字符,输入字符后返回,同时显示所输入的字符。如按Ctrl+Break或Ctrl+C则退出。(验证课本P116例46)2)输入字符串DOS功能号:0AH;入口参数:DS:DX指向字符串缓冲区的第1个字符,且第1个字节需填入最多接收的字符个数;出口参数:前述缓冲区存放实际输入字符的个数(不包括回车);第3个字节开始将存放字符串的结果。实际输入的字符数多于所定义的数时,多出的字符将被丢掉,且响铃。功能:等待用户输入字符,以回车结束。(验证课本P117例47)3)显示单个字符DOS功能号:09H;入口参数:DL=待显示字符的ASCII码;功能:在当前显示器光标位置显示给定字符,且光标右移一个字符位置。如按Ctrl+Break或Ctrl+C则退出。(验证课本P117例48)4)显示字符串DOS功能号:0AH;入口参数:DS:DX指向字符串所在内存的首地址,要求字符以结束;功能:显示器上输出指定的字符串。(验证课本P117例49)3. 验证并运行课本P111例4-43和P112例4-44。1)课本P111例4-43,将内存中一串1位的十六进制数转换为对应的ASCII码。DATA SEGMENT HEXBUF DB 02H,08H,0AH,09H,0FH COUNT EQU $-HEXBUFDATA ENDSSTACK SEGMENT DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKHEXD PROC NEAR CMP AL, 0AH JL ADDZ ADD AL, A-0-0AHADDZ: ADD AL, 0 RETHEXD ENDPBEGIN: MOV AX, DATA MOV DS, AX MOV BX, OFFSET HEXBUF MOV CX, COUNTREPEAT0: MOV AL, BX CALL HEXD MOV BX, AL INC BX LOOP REPEAT0 MOV AX, 4C00H INT 21HCODE ENDS END BEGIN2)课本P112例4-44,将内存中两个字单元的值分别转换为4个ASCII码表示的十六进制数码串,串的起始地址为STRING1和STRING2.DATA SEGMENT NUMBER DW 25AFH,33FBH STRING1 DB 4 DUP (?) STRING2 DB 4 DUP (?) DATA ENDSSTACK SEGMENT DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKHEXD PROC NEAR CMP AL, 0AH JL ADDZ ADD AL,A-0-0AHADDZ: ADD AL,0 RET HEXD ENDPBEGIN: MOV AX, DATA MOV DS, AX MOV ES, AX;第一个字单元的转换 LEA BX, STRING1 PUSH BX PUSH NUMBER CALL BINHEX;第二个字单元的转换 LEA BX, STRING2 PUSH BX PUSH NUMBER+2 CALL BINHEX MOV AX, 4C00H INT 21H;子程序BINHEX PROC PUSH BP MOV BP, SP PUSH AX PUSH DI PUSH CX PUSH DX PUSHF MOV AX, BP+4 MOV DI, BP+6 ADD DI, 3 MOV DX, AX MOV CX, 4AGAIN: AND AX, 0FH CALL HEXD STD STOSB PUSH CX MOV CL, 4 SHR DX, CL MOV AX, DX POP CX LOOP AGAIN POPF POP DX POP CX POP DI POP AX POP BP RET 4BINHEX ENDPCODE ENDS END BEGIN三实验要求实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。四思考题子程序是怎样被调用的?请用DEBUG调试程序观察并分析。五实验报告1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。5、回答思考题。附录1 Masm for Windows集成实验环境一、安装:Masm for Windows集成实验环境可安装在Windows 2000、WindowsXP、Windows VISTA、WINDOWS 7等操作系统。安装方法与其他Winodows下的应用程序一样,双击安装文件开始安装,下面按默认设置即可完成安装。二、卸载:方法一:在“控制面板”上双击“添加和删除程序”图标,然后在打开的“添加和删除程序”对话框中选择“Masm for Windows集成实验环境”进行删除即可。 方法二:依次点击“开始/程序/汇编语言集成实验环境/卸载Masm for Wi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论