8086 8088微机原理与接口技术实验指导书_第1页
8086 8088微机原理与接口技术实验指导书_第2页
8086 8088微机原理与接口技术实验指导书_第3页
8086 8088微机原理与接口技术实验指导书_第4页
8086 8088微机原理与接口技术实验指导书_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、 微型原理与接口技术 实验指导书8086/8088微机原理与接口技术56目 录8086/8088微机原理与接口技术1前 言3第一章 实验环境介绍51.1汇编语言程序的上机过程51.1.1、源程序的编辑51.1.2、汇编51.1.3、链接51.1.4、调试6第二章 软件部分实验7实验一 汇编语言上机环境及基本操作7实验二 debug调试程序的应用10实验三 顺序程序设计16实验四 分支结构程序设计18实验五 循环结构程序设计20实验六 子程序设计22实验七 emu8086集成开发环境24实验八 综合程序设计与调试26附录 debug用法大全28前 言认真做好实验,是掌握应用,提高动手能力的一个重

2、要环节。本课程安排了一些接口部件的实验,每个实验2学时,目的在于让同学们了解和掌握汇编语言的程序设计的基本方法和常用的接口器件的使用方法。一个完整的实验过程,包括实验前的准备、实验操作过程和实验后的总结三部分。做好实验前的准备,是做好实验的重要保障,希望同学们一定要做好实验前的准备工作。一、实验前的准备1、认真阅读实验指导书,详细了解本课程实验的软硬件环境。硬件环境:实验仪的基本组成和使用方法。软件环境:调试软件的基本功能和使用方法。这项工作应该在本学期开始,领到实验指导书时就进行。2、详细了解本次实验的基本任务,充分理解实验原理为了实现本次实验的基本任务,硬件电路由哪几个部分组成,各部分电路

3、的主要作用是什么,各部分电路之间如何连接?在此基础上读懂实验电路图。为了实现本次实验的基本任务,软件部分需要完成哪些工作,确定软件由哪些功能模块组成,然后画出程序流程图,再按流程图编写源程序。在软硬件设计过程中,可能需要进行相应的参数计算。3、设计实验的操作流程事先设计好实验的操作流程,进入实验室后,可以有条不紊地工作。二、实验操作过程进入实验室以后,要按照事先设计好的实验操作流程来进行实验。软件实验的基本步骤为:1、启动pc机2、编辑源程序3、编译4、调试三、实验记录如实记录实验的操作过程及实验的数据,这里主要包括:1、实验的相关数据2、实验过程中的问题(包括分析与解决)四、实验报告实验报告

4、是实验结果的总结,一般需要包括以下内容:1、实验名称 这里需要准确无误地写出实验的名称2、实验目的 3、实验任务(实验内容)4、实验原理 、硬件组成(软件实验没有此项内容)首先以文字说明实验电路由哪几个部分组成,各部分电路的主要作用是什么,然后给出实验电路图。、软件设计首先以文字说明软件需要完成哪些工作,因此确定软件由哪些功能模块组成,然后画出程序流程图,再按流程图编写源程序。5、实验操作这里,如实记录实验的操作过程或者是事先设计好的实验操作流程。6、实验记录这里,如实记录相关的实验数据以及实验过程中出现的问题和解决方法。7、实验结果根据前面记录的实验数据,给出实验的结果。一般情况下,有两种实

5、验的结果:其一,实验过程中出现了一些问题,经过分析,解决了问题,最终成功实现了实验任务的要求;其二,实验过程中出现了一些问题,最终未能解决了问题,实验失败。8、实验分析:对实验过程中的问题进行分析。9、实验小结(包括体会)可以从实验的目标、实验环境的掌握、分析问题和解决问题的能力等几个方面来进行小结。也可以抒发一下你的感想。10、思考题的解答如果有思考题,需要认真解答。第一章 实验环境介绍1.1汇编语言程序的上机过程在计算机上运行汇编语言程序的步骤是: 用编辑程序(任何一种文本编辑程序)建立asm文件; 用masm程序把asm文件转换成obj文件; 用link程序把obj文件转换成exe文件;

6、 用debug程序可以调试目标程序 用dos命令直接键入文件名就可执行该程序1.1.1、源程序的编辑源程序本质上是文本文件,任何一种文本编辑器都可以用来编写源程序,也可以使用计算机系统内含的全屏幕编辑程序edit.exe。应注意的是: 源程序的编写必须符合汇编语言源程序的语法格式,否则汇编时会报错。 汇编语言源程序的文件后缀必须是asm,否则汇编程序将不能识别。1.1.2、汇编汇编的目的是将汇编语言源程序转换为机器码,这项工作是由汇编程序来完成的。ibm pc提供了两种汇编程序:asm.exe和masm.exe。后者具有宏汇编功能。汇编过程中,首先检查源程序的语法。若存在语法错误,则汇编失败。

7、列出有错误的语句、错误的代码、错误的类型和错误的总数,供分析、修改源程序。若不存在语法错误,则汇编成功。汇编后可生成3个文件:l 浮动的目标代码文件(*.obj):其中,地址操作数是可浮动的相对地址。l 可打印的列表文件(*.lst):将源程序和目标代码合并制成表。l 符号表文件(*.crf):反映源程序中符号的定义和引用情况。其中,第1个文件是必须生成的,后2个文件可选择是否生成。1.1.3、链接由汇编生成的目标代码必须经过链接后才能生成可执行文件,这项工作由链接程序(link.exe)来完成。链接后生成可执行文件(*.exe)1.1.4、调试调试的目的是验证程序的功能是否符合设计的目标。i

8、bm pc提供了一种调试程序:debug.exe在debug环境下,可以使用debug命令来调试程序。常见的debug命令见附录debug用法大全。第二章 软件部分实验实验一 汇编语言上机环境及基本操作一、 实验目的及要求1 学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。2 学会使用edit、masm、link、debug等软件工具。3 熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。二、 实验器材:计算机一台,masm汇编软件及debug调试程序三、 实验内容1 建立软件工作环境为了正常运行汇编程序,需要如下程序: masm.exe link.ex

9、e debug.exe 等2 建立汇编文件例 在屏幕上输出 this is a masm sample!使用edit编辑如下文件,并保存为sample.asm:;program is an exampledata segment astr db this is a masm sample!,0dh,0ah,$data endscode segmentassume cs:code,ds:data start:movax, datamovds, axleadx, astrmovah, 09hint21h code ends end start1) 使用汇编c: masm sample -开始汇编m

10、icrosoft (r) macro assembler version 5.00copyright (c) microsoft corp 1981-1985, 1987. -软件提示object filenamesample.obj: -提示输入目标文件名,可省略source listingnul.lst: -提示输入列表文件名,可省略cross referencenul.crf: warning severe 注意:若汇编的错误提示不为0,则须重新调用edit sample.asm修改错误,然后再汇编,该过程直到错误提示为0为止。2) 使用link产生exe文件c:link sample.

11、run filesample.exe:-提示输入可执行文件名,可以省略list file nul.map:-提示输入连接映象文件libraries.lib -输入文件用到的库文件名.3) 执行c:sample 或 debug sample.exe附:ms-dos方式,是windows提供的一个字符界面的shell窗口,通过“开始程序ms-dos方式”进入ms-dos方式后,可以按下“alt+enter”获得全屏幕的窗口,再该窗口下,主要通过键入命令和观察结果获得交互信息。命令简介1、 dir命令显示当前目录下的文件和目录格式为:dir2、 cd命令改变当前工作目录格式为:cd d:studen

12、tyour_name3、 md命令建立一个新的目录格式为:md your_name4、 del命令删除文件格式为:del first01.asm5、 rd命令删除目录,要求要删除的目录下无任何目录或文件格式为:rd your_name6、 copy命令拷贝命令格式为:copy first01.asm (将文件first01.asm复制为)实验二 debug调试程序的应用一、实验目的及要求1了解并掌握常用debug调试指令。2能够在熟悉汇编程序开发过程的同时,利用debug调试环境对源程序进行调试、跟踪及修改相应的逻辑错误。二、实验器材:计算机一台,

13、masm汇编软件及debug调试程序三、实验内容1直接启动debug程序如debug.exe在c盘的根目录下,启动的方法是:c:debug这时屏幕上会出现“_提示符,等待键入debug命令。2启动debug程序的同时装入被调试文件 命令格式如下:c:debugd:pathfilename.exe 其中,【d:】【path】是被调试文件所在盘及其路径,filename是被调试文件的文件名, 【.exe】是被调试文件的扩展名。 例如:bcdsumexe可执行文件在a盘,用debug对其进行调试的操作命令如下。 c:debug a:bcdsun.exe dos在调用debug程序后,再由debug把

14、被调试文件装入内存,当被调试文件的扩展名为com时,装入偏移量为100h的位置,当扩展名为exe时,装入偏移量为0的位置,并建立程序段前缀psp,为cpu寄存器设置初始值。3退出debug 在debug命令提示符“_下键入q命令,即可结束debug的运行,返回dos操作系统。4在debug环境下建立和汇编程序 在debug环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行汇编。 比如,在debug下运行如下程序: mov dl,33h ;字符3的ascii码送dl mov ah,2 ;使用dos的2号功能调用 int 21h 进入功能调用,输出3 int 20h :bios中

15、断服务,程序正常结束。 该程序运行结果是在显示器上输出一个字符3。如果要输出其它字符,请改变程序中33h为相应字符的ascii码。其中涉及dos和bios功能调用。因为我们是在dos的支持下运行汇编语言程序,所以一般情况下,不能轻易使用输入输出指令直接通过端口输入输出,而必须使用dos内部提供的子程序完成输入输出。 dos功能调用就是为诸如此类的目的设置的。dos功能调用要求在进入int 21h调用前,首先将功能调用号送ah寄存器,并根据功能调用号准备初始数据。也就是说int 21h的2号功能调用是输出dl寄存器中的字符。int 20h是bios中断服务,这一软中断用来正常结束程序。 运行步骤

16、: (1)进入debug 设c盘上有debug.com程序,进入dos环境后键入debug,即 c: debug 随后屏幕显示: “_号是进入debug的提示符,在该提示符下可键入任意debug命令。现在用a命令输入程序如下。 (2)输入程序并汇编 _a 100 169c:0100 mov dl,33 169c:0102 mov ah,2 169c:0104 int 21 169c:0106 int 20 169c:0108 至此程序已输入完毕,并汇编成机器指令。现在用g命令运行程序如下:(3)执行机器指令程序 _g=100 3program terminated normally5编程,并对

17、实验一中的源程序进行debug调试。附:常用debug命令 debug命令是在命令提示符”_”下由键盘键入的。每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键(enter)。命令及参数的输入可以是大小写的结合。crtl+break键可中止命令的执行。crtl+numloek键可暂停屏幕卷动,按任一键继续。所用的操作数均为十六进制数,不必写h。1.汇编命令a 格式: (1)a: (2)a : (3)a (4)a 功能:汇编命令是将用户输入的汇编语言指令,汇编为可执行的机器指令。键人该命令后显示段地

18、址和偏移地址并等待用户从键盘逐条键入汇编语言指令。每当输入一行语句后按“enter键,输入的语句有效。若输入的语句中有错,debug会显示“error,要求用户重新输入,直到显示下一地址时用户直接键入回车键返回到提示符”_”。其中(1)用指定段寄存器内容作段地址;(3)用cs内容作段地址;(4)以cs:100作地址。以后命令中提及的各种地址形式,均指(1)、(2)、(3)中a命令后的地址形式。2比较命令c 格式:c, 其中是由指出的一片连续单元,或由l指定的。 功能:从的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。遇有不一致时,以的形式显示失配单元及内容。

19、3.显示内存单元命令d 格式: (1) d (2)d (3)d 其中(1)以cs为段寄存器;(3)显示cs:l00为起始地址的一片内存单元内容。功能:该命令将显示一片内存单元的内容,左边显示行首字节的段地址:偏移地址,中间是以十六进制形式显示的指定范围的内存单元内容,右边是与十六进制数相对应字节的ascii码字符,对不可见字符以.代替。4修改内存单元命令e 格式: (1)e (2)e其中是一个十六进制数,或是用引号(或)括起来的字符串;是以逗号分隔的十六进制数,或是用(或)括起来的字符串,或者是二者的组合。功能:(1)将指定内容写入指定单元后显示下一地址,以代替原来内容。可连续键入修改内容,直

20、至新地址出现后键入回车为止;(2)将逐一写入由开始的一片单元中,该功能可以将由指定地址开始的连续内存单元中的内容,修改为单元内容表中的内容。例如: _e ds:30 f8,ab,ab 该命令执行后,从ds:30到ds:33的连续4个存储单元的内容将被修改为f8h,abh,4lh,42h。5填充内存命令f 格式:f功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。例如:f 05bc:200 l 10 b2,xyz,3c该命令将由地址05bc:200开始的10h(1 6)个存储单元顺序填充“b2,58,59,5a,3c,b2,58,59,5a,3c,b2,58,59,5a,

21、3c,b26. 连续执行命令g 格式: (1)g (2)g= (3)g=,其中(2)、(3)中的”=”是不可缺省的。功能:默认程序从cs:ip开始执行。程序从当前的指定偏移地址开始执行。从指定地址开始执行,到断点自动停止并显示当前所有寄存器、状态标志位的内容和下一条要执行的指令。debug调试程序最多允许设置l0个断点。7. 跟踪命令t 格式:t【=】【】 功能:如果键入t命令后直接按“enter键,则默认从cs:ip开始执行程序,且每执行一条指令后要停下来,显示所有寄存器、状态标志位的内容和下一条要执行的指令。用户也可以指定程序开始执行的起始地址。的缺省值是一条,也可以由指定执行若干条命令后

22、停下来。例如:t该命令执行当前指令并显示所有寄存器、状态标志位的内容和下一条要执行的指令。又例如:t 10 该命令从当前指令开始执行10h条指令后停下来,所有寄存器、状态标志位的内容和下一条要执行的指令。8. 反汇编命令u 格式: (1)u (2)u功能:反汇编命令是将机器指令翻译成符号形式的汇编语言指令。该命令将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次u指令后下一地址的值。这样可以连续反汇编。9执行过程命令p 格式:p功能:执行一条指令或一个过程(子程序),然后显示各寄存器的状态。说明:

23、该命令主要用于调试程序。它与跟踪命令t的作用类似,t命令是跟踪一条或多条指令,而p命令是执行一条指令(包括带重复前缀的数据串操作指令)或一个完整的过程(子程序)。例如:设有如下指令序列 mov ah,02hint 21 h ;当要执行int 21 h这条指令时,若用t命令进行跟踪,则进入int 21 h程序(dos功能调用)后,需要数十次t命令才能返回当前程序;若采用p命令进行调试,则只执行int 20h一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。因此,当以后遇到call、int n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用p命令。

24、10定义待装入文件命令n格式:n 【d:】【path】fllename exe】功能:n命令一般和l命令联合使用,为l命令定义指定路径的待装入文件。11装入文件命令l格式:l其中的缺省值为cs:100。逻辑扇区可由物理扇区号换算得到,以双面双密度盘为例:物理扇区是按0面0道1区,0面0道2区,0面0道9区,0面l道l区,0面39道9区,l面0道l区,l面39道9区排列。而逻辑扇区与物理扇区号的对应关系为物理扇区0面0道l扇区至9扇区,逻辑扇区号为08;物理扇区l面0道l扇区至9扇区,逻辑扇区号为9l l h:物理扇区0面l道l扇区至9扇区,逻辑扇区号为1 2-1 ah这样每道先0面后l面一直排

25、下去。其中为0、l或2,0表示a盘,l表示b盘,2表示硬盘。功能:将指定的盘上,从起,共n个逻辑扇区上的所有字节顺序读入指定内存地址的一片连续单元。当l后的参数缺省时,必须在l之前由n命令指定(或进adebug时一并指出)所读盘文件名。此时l执行后将该文件装入内存。例如:_n example_l将当前盘上的example文件装入cs:100起始的一片内存单元。12内存单元搬家命令m 格式:m其中源及目标地址若仅输入偏移量,则隐含相对ds。功能:把中的内容顺序搬至起的一片连续单元。例如:m cs:100 110 600该命令把由cs:100起到cs:110止共17个字节搬至ds:600至ds:6

26、10的一片单元。13写盘命令w 格式:w 功能:该命令是将内存起始的一片单元内容写入指定扇区。只有w而没有参数时,与n命令配合使用使用户完成写盘操作。用户可用n命令先定义被调试的文件,再将被调试文件的字节长度值送bx、cx(bx寄存器存放字节长度值的高位,cx寄存器存放字节长度值的低位),最后用写盘命令w将被调试文件存入磁盘。例如:欲将d1.com文件写入磁盘,设文件长度为40字节,可进行如下操作。 _n d1.com -r cx cx xxxx:0040 _r bx bx xxxx :0000 _w writing 00040 bytes1 4显示命令r格式: (1)r (2)r 功能:显示

27、当前所有寄存器内容、状态标志及将要执行的下一指令的地址(即cs:ip)、机器指令代码及汇编语句形式。其中对状态标志寄存器flag以状态标志位的形式显示,详见教材。15端口输出命令。格式:o功能:将该由指定输出。例如:o 2f 4f该命令将4fh从2fh口输出.16搜索指定内存命令s格式:s 功能:在指定范围搜索表中内容,找到后显示表中元素所在地址例如:s 100 110 41屏幕显示:04ba:0104 04ba:010d表示在l00hlloh之间的一片存储单元中,104h和10dh两个单元有41 h。又如:s cs:100 l 10 ab表示在当前代码段位移100h至11oh处搜索连续3个字

28、节内容为41h、42h(分别对应a、b的ascii码)的单元。17十六进制算术运算指令h 格式:h 功能:求十六进制数和的和与差并显示结果。18端口输入命令i格式:i功能:将从指定端口输入的内容显示出来。19结束debug返回dos命令q格式:q 功能:返回dos提示符下。实验三 顺序程序设计一、实验目的1 掌握算术运算指令的应用方法。2 理解计算机中除法溢出的含义。3 掌握顺序程序设计的方法。二、实验器材:计算机一台,masm汇编软件及debug调试程序三、实验内容1设w、x、y、z均为l 6位带符号数。2要求完成计算表达式(w-(x*y+z-220)/x。3将表达式的商和余数存入数据区re

29、sult单元开始的区域中。四、编程思路 该题目要求掌握乘除法运算中带符号数和无符号数运算的区别。为了实现指定功能,应从以下几个方面考虑: (1)带符号数的乘除法运算应选用的指令。 (2)乘、除法运算中操作数的长度问题。 (3)带符号数的扩展问题。 五、参考程序清单 data segment w dw -304 x dw 1000 y dw -12 z dw 20 result dw 2 dup(?) data ends code segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,x imul y mov cx,a

30、x mov bx,dx mov ax,z cwd add cx,ax 、 adc bx,dx sub cx,220 sbb bx,0 mov ax,w cwd sub ax,cx sbb dx,bx idiv x mov result,ax mov result+2,dx mov ah,4ch int 21hcode endsend start六、思考题1)如果是无符号数,乘除时应如何选择指令?2)如果要求表达式中的x,y,z,w从键盘输入应如何设计程序?实验四 分支结构程序设计一、实验目的1掌握多分支结构程序设计的方法;2掌握无符数和带符号数比较大小转移指令的区别。二、实验器材:计算机一台,

31、masm汇编软件及debug调试程序三、实验内容1在数据区中定义三个带符号字节变量。2编写程序将其中的最大数找出送到max单元中。四、编程思路该题目要求掌握多分支程序设计方法。为了实现指定功能,应从以下几个方面考虑:(1) 确定编程的算法思想。(2) 确定带符号数比较大小转移应选择哪一组条件转移指令。五、参考程序清单data segment x db 115 y db 23 z db -20 max db ? data endscode segment assume ds:data,cs:codestart:mov ax,data mov ds,ax mov al,x cmp al,y jg

32、next mov al, y cmp al,z jg exit mov al,z jmp exitnext: cmp al,z jg exit mov al,zexit: mov max,al mov ah,4ch int 21h code endsend start ;返回dos六、思考题1)如果用子程序的方法来设计程序,应如何修改此程序?2)如果是无符号数比较大小,条件转移时应选择哪一组指令?实验五 循环结构程序设计一、实验目的 1掌握循环结构程序设计的方法;2掌握数据块传送程序设计的方法;3掌握串传送指令的应用。二、实验器材:计算机一台,masm汇编软件及debug调试程序三、实验内容1

33、 编写程序实现将数据段str1单元开始的20个字符移到str2开始的存储区。2 假设str1+20str2,可以用串传送指令,也可以用mov传送指令。四、编程思路该题目要求掌握单循环程序设计方法。为了实现指定功能,应从以下几个方面考虑:(1)数据串操作的起始位置从高地址还是从低地址开始。(2)确定使用串传送指令,还是用mov指令。(3)确定循环程序的结构。五、参考程序清单data segment str1 db what is your name?,0ah,0dh,$ cn equ $-str1str2 equ str1+cn-5code segment assume ds:data,cs:c

34、ode,es:datastart: mov ax,data mov ds,ax mov es,ax mov dx,offset stri mov ah,09h int 21h mov si,offset str1mov di,offset str2mov cx,cnadd si,cn-1add di,cn-1stdrep movsbmov dx,offset str2mov ah,09hint 21hmov ah,4chint 21hcode ends end start六、思考题 1)如果要求字符串从键盘中输入,应如何设计程序?2)用子程序方法,且不使用movsb指令来完成数据块的传输,应如

35、何设计程序?实验六 子程序设计一、实验目的1. 掌握子程序的结构和设计方法;2. 掌握子程序的调用和返回指令的用法及执行情况;3. 掌握在子程序调用时堆栈的变化情况;4. 掌握主程序与子程序间参数传递的方法;5. 掌握现场的保护与恢复方法。二、实验器材:计算机一台,masm汇编软件及debug调试程序三、实验内容 已知当前数据段中buf开始分别存放若干二进制字节数据,编制程序将这些数据分别转换为十六进制数据在屏幕上显示出来,要求十六进制转换ascii码用子程序实现。四、编程思路该题目要求掌握单循环程序设计方法。为了实现指定功能,应从以下几个方面考虑:(1)主、子程序各自需实现的的功能。(2)主

36、、子程序间参数的传递方式。(3)确定子程序的结构。五、实验源程序;conv.asmdata segmentbuf db 0abh,0cdh,0deh,01h,02h,03h db 3ah,4bh,5ch,6fhdata endscode segment assume cs:code, ds:datastart: mov ax, data mov ds, ax mov cx, 10 lea bx, bufagain: mov al, bx call hex2asc ;调用十六进制转换ascii码子程序;*显示ascii码* push cx mov cx, dx mov dl, ch ;显示高位

37、mov ah, 2 int 21h mov dl,cl ;显示低位 mov ah, 2 int 21h mov dl, ;显示空格 mov ah,2 int 21h pop cx inc bx loop again mov ah, 4ch ;返回dos int 21h;*十六进制转换ascii码子程序*hex2asc proc near mov dh,al push cx mov cl,4 shr dh,cl cmp dh,9 jbe next1 add dh,7next1: add dh,30h mov dl,al and dl,0fh cmp dl,9 jbe next2 add dl,7

38、next2: add dl,30h pop cx rethex2asc endpcode ends end start上面主程序通过al寄存器将需要判断字符的asc码传递给子程序,而子程序将判断结果通过标志寄存器的cf位传递给主程序。如果是数字字符,则cf=0,否则cf=1。实验七 emu8086集成开发环境一、实验目的:掌握emu8086的使用方法。二、实验器材:计算机一台,emu8086程序三、实验内容:从键盘输入一行字符(以回车符结束),并按字母、数字及其字符分类计数,最后显示出这3个计数结果。要求在emu8086集成开发环境中进行。四、编程思路 该题目要求掌握多分支、单循环程序设计方法

39、。为了实现指定功能,应从以下几个方面考虑:(1)数据是由键盘输入产生的,为此应调用键盘输入中断程序。(2)确定使用多分支判断的设计。(3)确定循环程序的结构。五、参考程序清单data segment buf db 50 dup(?) count1 db 0 count2 db 0 count3 db 0 data ends code segment assume ds:data,cs:code main proc far push ds mov ax,0 push ax lea bx,buf input:mov ah,1 int 21h mov bx,al inc bx cmp al,13 j

40、nz input lea bx,buf again: mov al,bx inc bx cmp al,13 jz ok cmp al,0 jb next2 cmp al,9 ja next1 inc count1 jmp again next1:cmp al,a jb next2 cmp al,z ja next2 inc count2 jmp again next2:inc count3 jmp again ok: ret main endp code ends end实验八 综合程序设计与调试一、 实验目的:综合运用分支、循环及子程序设计,掌握综合程序的设计方法与调试方式,提高综合程序的设

41、计能力。二、 实验器材:计算机一台,emu8086程序三、 实验内容:综合设计,实现从键盘接收一串不多于99个字符的字符串,对其进行分类统计,显示其中数字字符个数、大写英文字母个数、小写英文字母个数、其它字符个数。四、编程思路 该题目要求掌握分支、循环及子程序设计,掌握综合程序的设计方法。为了实现指定功能,应从以下几个方面考虑:(1)数据是由键盘输入产生的,为此应调用键盘输入中断程序。(2)确定使用多分支判断的设计。(3)确定循环程序的结构。(4)确定子程序的结构。五、参考程序清单data segmentmsg db 0dh,0ah,input a string of characters:$

42、msg1 db 0dh,0ah,capital letters number:$msg2 db 0dh,0ah,lowercase letters number:$msg3 db 0dh,0ah,digital number:$msg4 db 0dh,0ah,other number:$buf db 99 ;键盘接收缓冲区 db 0 db 99 dup (?)big db 0little db 0dig db 0other db 0data endscode segment assume ds:data,cs:codestart: mov ax,data mov ds,ax mov dx,of

43、fset msg mov ah,9 int 21h lea dx,buf mov ah,10 int 21h mov cl,buf+1 xor ch,chjcxzdisp;未接收信息则显示全0 lea si,buf+2again: cmp byte ptr si,30h jb others cmp byte ptr si,39h jbe digitals cmpbyte ptr si,41h jb others cmp byte ptr si,5ah jbe bigs cmp byte ptr si,61h jb others cmp byte ptr si,7ah jbe littlesot

44、hers: inc other jmp okdigitals:inc dig jmp oklittles:inc little jmp okbigs: inc bigok: inc si loop againdisp: lea dx,msg1 mov bh,big call dispdec lea dx,msg2 mov bh,little call dispdec lea dx,msg3 mov bh,dig call dispdec lea dx,msg4 mov bh,other call dispdec mov ah,4ch int 21h;入口参数:dx为待显示数据说明的首地址,bh

45、为待显示的小于100的数据dispdec proc near mov ah,9 int 21h mov al,bh xor ah,ah aam mov dl,ah mov dh,al add dl,30h mov ah,2 int 21h mov dl,dh add dl,30h movah,2 int 21h retdispdec endpcode endsendstart附录 debug用法大全启动 debug,它是可用于测试和调试 ms-dos 可执行文件的程序。debug drive:path filename parameters参数drive:path filename指定要测试的

46、可执行文件的位置和名称。arameters指定要测试的可执行文件所需要的任何命令行信息。+说明使用 debug 命令但不指定要测试的文件如果使用没有位置和文件名的 debug 命令,然后键入所有的 debug 命令以响应 debug 提示符,连字符 (-)。debug 命令以下是 debug 命令列表:? 显示 debug 命令列表。a 汇编 8086/8087/8088 记忆码。c 比较内存的两个部分。d 显示部分内存的内容。e 从指定地址开始,将数据输入到内存。f 使用指定值填充一段内存。g 运行在内存中的可执行文件。h 执行十六进制运算。i 显示来自特定端口的 1 字节值。l 将文件或磁盘扇区内容加载到内存。m 复制内存块中的内容/n 为 l 或 w 命令指定文件,或者指定正在测试的文件的参数。o 向输出端口发送 1 个字节的值。 p 执行循环、重复的字符串指令、软件中断或子例程。q 停止 debug 会话。r 显示或改变一个或多个寄存器。 s 在部分内存中搜索一个或多个字节值的模式。t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 debug 下一步要执行的指令的解码形式。u 反汇编字节并显示相应的原语句。w

温馨提示

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

评论

0/150

提交评论