版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验预备知识PAGE2PAGE2微机原理与接口技术实验指导书电气工程实验教学中心
目录实验预备知识 1第一部分汇编语言程序设计上机操作过程 1第二部分TDEBUG软件的使用说明 5软件实验部分 9第一部分指令系统 9实验1.1寻址方式 9实验1.2算术运算指令(一) 10实验1.3算术运算指令(二) 11实验1.4十进制调整指令 11实验1.5逻辑运算指令 12实验1.6循环移位指令 13实验1.7程序控制类指令 14实验1.8DOS系统功能调用 15实验1.9运算符与伪指令系统 15第二部分汇编语言程序设计 17实验2.1汇编语言程序的调试与运行 18实验2.2分支程序设计 21实验2.3循环程序设计(一) 23实验2.4循环程序设计(二) 25实验2.5子程序结构 26硬件实验部分 28实验3可编程计数器/定时器8253 28实验4可编程并行接口8255(一) 32实验5可编程并行接口8255(二) 33实验6可编程串行接口8251 37附录 39附录一汇编错误信息表 39附录二DEBUG键入命令简介 46PAGE48PAGE47
实验预备知识第一部分汇编语言程序设计上机操作过程要建立和运行汇编语言程序,至少要在磁盘上具有如下文件:编辑程序(如TC、EDIT、PE、记事本等)宏汇编程序(MASM、ASM)链接程序(LINK)调试程序(DEBUG、TDEBUG等)汇编语言程序上机的四个步骤:步骤一:建立或修改汇编语言源程序(如MY.ASM文件)用户可通过编辑程序对汇编语言源程序MY.ASM进行编写或修改,编辑程序的使用方法用户可查阅相关书籍。步骤二:用汇编程序MASM对源文件进行汇编产生二进制的目标文件(如MY.OBJ文件)。用户可以在源程序建立以后,使用汇编程序MASM.EXE对源程序进行汇编。所谓汇编,实际上就是把(*.ASM)源程序转换成用二进制代码表示的(*.OBJ)目标文件。在汇编过程中,汇编程序对源程序文件(*.ASM)进行二次扫描,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误。用户可以再使用编辑程序来修改源程序中的错误,再一次进行汇编,直至得到没有语法错误的(*.OBJ)目标文件。汇编程序的输入文件只有一个:是用户编写的汇编源程序文件(*.ASM)。汇编程序的输出文件可以有三个:1.目标文件(*.OBJ):我们进行汇编的主要目的。2.列表文件(*.LST):可以同时给出源程序和机器语言程序,为调试程序时提供方便,但列表文件是可有可无的。若不需要时,则在屏幕上出现提示信息[NUL.LST]:时打入回车即可;若需要时,则打入文件名和回车。3.交叉引用表(*.CRF):同列表文件一样,也是为了调试程序而设置的,交叉文件也是可有可无的。若不需要时,可在屏幕上出现提示信息[NUL.CRF]:时打入回车即可;若需要时,则打入文件名和回车。汇编过程结束时,汇编程序给出源程序中的警告性错误[WarningError]和严重错误[SevereError],前者指的是一般性错误而后者指的是语法错误。当存在这两类错误时,屏幕上会指出错误的个数,给出错误信息代号,程序员可以通过查找手册搞清楚错误的性质。要指出的是汇编过程只能指出源程序中的语法错误,并不能指出算法错误和其它错误。步骤三:用连接程序LINK生成可执行文件(*.EXE文件)。汇编程序根据源程序生成二进制的目标文件(*.OBJ文件),但(*.OBJ文件)用的是浮动地址,它不能直接上机执行,因此,还必须使用连接程序LINK将(*.OBJ)文件转换成可执行的文件(*.EXE文件)。LINK还可以将一个目标文件和其它多个模块连接起来。连接程序的输入文件只有一个:是经过汇编生成的目标文件(*.OBJ)。连接程序的输出文件可以有两个:可执行文件(*.EXE文件):是LINK过程的主要目的。列表分配文件或称映象文件(*.MAP文件):它给出每个段在内存中的分配情况。(*.MAP)文件是可有可无的。需要时,打入文件名和回车,否则直接打入回车。在LINK过程的提示信息中,可能会看到最后给出了一个“无堆栈段”的警告性错误,这并不影响程序的执行,如果源程序中设置了堆栈段则无此提示信息。步骤四:程序的执行。有了可执行文件,就可以执行程序了,执行程序有两种方法:方法一:在DOS状态下,直接打入文件名后回车,或在WINDOWS状态下,双击文件名。方法二:使用调试程序TDEBUG或DEBUG,操作方法可见TDEBUG软件的使用,或参阅附录。实际上,大部分用户程序都必须经过调试阶段才能纠正程序中的错误,从而得到正确的结果。所谓调试阶段,就是用调试程序(TDEBUG或DEBUG)发现错误,再经过编辑、汇编、连接来纠正错误。关于DEBUG程序中的常用命令,可参阅附录。
①使用DEBUG调试界面如下:②使用TDEBUG调试界面如下:
第二部分TDEBUG软件的使用说明TurboDebgger3.0版本的调试环境。分为四个窗口:分别是被调试程序窗口、寄存器当前内容窗口、数据段内容窗口和堆栈段内容窗口。如下图:主菜单有:File、Edit、View、Run、Breakpoints、Data、Options、Window、Help等。下面分别简要介绍。1.FILE:OPEN...载入一个新的可执行文件;CHANGEDIR...改变当前目录;GETINFO...显示正在被调试的程序相关的系统信息;DOSSHELL回到DOS环境;RESIDENT使TDEBUG结束调试但不退出调试环境;SYMBOLLOAD...载入新的符号表;TABLERELOCATE...给符号表规定一个新的段基址;QUIT(ALT+X)从TDEBUG中退出;2.EDIT:COPY(SHIFT+F3)复制;PASTE(SHIFT+F4)粘贴;COPYTOLOG将所选项目放到调试运行记录中;DUMPPANETOLOG复制当前窗格到调试运行记录中;3.VIEW:BREAKPOINT打开断点窗口;STACK打开堆栈窗口;LOG打开调试记录窗口;WATCH打开观察窗口;VARIABLE打开变量窗口;MODULE...(F3)打开模块对话框;FILE...打开文件对话框;CPU打开CPU窗口;DUMP查看数据段的内容;REGISTERS查看寄存器内容;NUMERICPROCESSOR查看数字协处理器(80X87)的信息;EXECUTIONHISTORY查看历史信息;HIERARCHY打开类层次结构对话框;CLIPBOARD打开剪贴板窗口;ANOTHE:MODULE...打开新的模块化对话框;DUMP打开新的数据段窗口;FILE...打开另一个文件窗口;4.RUN:RUN(F9)运行整个程序;GOTOCURSOR(F4)运行到当前位置;TRACEINTO(F7)单步运行;STEPOVER(F8)单步,并且跳过子程序调用;EXECUTETO...(ALT+F9)运行到指定位置;UNTILRETURN(ALT+F8)运行子程序,直到返回到它的调用处;ANIMATE...连续单步运行,对话框中键入两个单步运行时间的延时;BACKTRACE(ALT+F4)单步的回溯;INSTRUCTIONTRACE(ALT+F7)执行一条机器指令;ARGUMENT...在被调试的程序中设命令行;PROGRAMMERESET(CTRL+F2)重新载入程序;5.BREAKPOINTS:TOGGLE(F2)在当前位置切换断点;AT...(ALT+F2)在指定位置设置断点;CHANGEDMEMORYGLOBAL...在存储区中设置断点;XPRESSIONTRUEGLOBAL...在表达式或变量为真的位置设置断点;HARDWAREBREAKPOINT...设置硬件断点,用于调试硬件问题;DELDTEALL移去所有断点;6.DATA:INSPECT...查找指定的变量或表达式;EVALUATE/MODIFY...(CTRL+F4)计算并显示指定的表达式的值;ADDWATCH...(CTRL+F7)在观察窗口添加新的跟踪表达式;FUNCTIONRETURN显示函数的返回值;7.OPTIONS:LANGUAGE...设定被调试程序的描述语言;MACROSCREATE...ALT=设置键击宏指令;STOPRECORDING(ALT+--)停止对宏的记录;REMOVE移去一个宏;DELETEALL删去所有宏;DISPLAYOPTIONS...设置屏幕显示的外观;PATHFORSOURCE...设定搜索源程序的默认路径;SAVEOPTIONS...将当前配置保存到磁盘上;RESTOREOPTIONS...从磁盘读入以前保存的配置;8.WINDOW:ZOOM(F5)缩放当前窗口;NEXT(F6)切换到下一个窗口;NEXTPANE(TAB)在同一个窗口的各个窗格间进行切换;SIZE/MOVE(CTRL+F5)移动窗口或改变窗口的大小;ICONIZE/RESTORE窗口最小化/恢复原来的窗口;CLOSE(ALT+F3)关闭当前窗口;UNDOCLOSE(ALT+F6)恢复最近被关闭的窗口;USERSCREEN(ALT+F5)查看被调试程序反映在屏幕上的运行结果;1CPU切换到高亮窗口;9.HELP:INDEX(SHIFT+F1)打开联机帮助目录;PREVIOUSTOPIC(ALT+F1)回到前一个帮助主题;HELPONHELP关于如何使用联机帮助的帮助信息;软件实验部分软件实验部分第一部分指令系统一.总体实验目的学习掌握调试软件(DEBUG或TDEBUG)的基本使用方法掌握8086/8088的寻址方式了解状态标志与控制标志的特点熟练掌握指令系统的基本操作掌握DOS系统功能调用掌握运算符及伪指令系统的基本操作二.总体实验内容将寻址方式、状态标志、指令系统及运算符与伪指令系统等内容分为几部分,对其分别进行调试与验证。实验1.1寻址方式已知:(60000H)=12H,(60001H)=34H,(60002H)=56H,(60003H)=78H,(70000H)=ABH,(70001H)=CDH,(70002H)=EFH,(70003H)=0DH。⑴分别执行下列指令后,填入指定寄存器的当前内容MOVAX,6000HMOVDS,AXMOVAX,7000HMOVSS,AXMOVBX,0MOVBP,0MOVSI,2MOVAX,BXAX=MOVAX,[0000H]AX=MOVAL,[0000H]AL=MOVAX,[BX]AX=MOVAL,[BX+1]AL=MOVAX,[BX+1]AX=MOVAL,[BX+2]AL=MOVAX,[BX+2]AX=MOVAX,[BX+SI]AX=MOVAX,[BP+SI]AX=⑵按下列要求分别编写指令组,将BLOCK数组中的第四个字数据存放在DX寄存器中。BLOCKDW1234H,5678H,‘AB’,‘CD’寄存器间接寻址寄存器相对寻址基址加变址寻址实验1.2算术运算指令(一)⑴MOVAL,76HADDAL,0A6H将操作码改为ADC、SUB、SBB,分别执行后填表操作码ALOFSFZFAFPFCFADDADCSUBSBB⑵MOVAX,8889HADDAX,7777H将操作码改为ADC、SUB、SBB,分别执行后填表操作码AXOFSFZFAFPFCFADDADCSUBSBB实验1.3算术运算指令(二)⑴MOVAL,96HMOVBL,12HMULBLAX=CF=OF=⑵MOVAL,96HMOVBL,12HIMULBLAX=CF=OF=⑶MOVAX,916EHMOVBX,18F2HMULBXDX=AX=CF=OF=⑷MOVAX,1007HMOVBL,09HDIVBLAX=说明原因如何修改实验1.4十进制调整指令⑴MOVAL,78HADDAL,26HAL=DAAAL=CF=AF=⑵MOVAL,08HADDAL,06HAL=AAAAL=CF=AF=⑶MOVAL,78HSUBAL,26HAL=DASAL=CF=AF=⑷MOVAL,07HMOVBL,09HMULBLAX=AAMAX=CF=AF=⑸MOVAX,0802HMOVBL,05HAADAX=DIVBLAX=AAMAX=CF=AF=实验1.5逻辑运算指令⑴MOVAX,8765HANDAX,89ABH将操作码改为OR、XOR、TEST,分别执行后填表操作码AXOFSFZFPFCFANDORXORTEST⑵ANDAX,AXAX=CF=ZF=OR AX,AXAX=CF=ZF=XORAX,AXAX=CF=ZF=⑶用一条逻辑指令使AX寄存器的高3位清零,其余位不变。⑷用一条逻辑指令使BX寄存器的高3位置1,其余位不变。⑸用一条逻辑指令使CX寄存器的高3位取反,其余位不变。⑹用一条逻辑指令测试DX寄存器的D3位。⑺用一条逻辑指令将AX中与BX中的对应位不相同的位均置为1。实验1.6循环移位指令⑴MOVAL,56HSHLAL,1AL=OF=SF=ZF=PF=CF=MOVAL,56HSHRAL,1AL=OF=SF=ZF=PF=CF=⑵MOVAL,87HSHLAL,1AL=OF=SF=ZF=PF=CF=MOVAL,87HSHRAL,1AL=OF=SF=ZF=PF=CF=⑶MOVDX,87E9HMOVCL,3STC()在上面的括号中分别填入下列指令,程序段执行后填表指令DX的值CFSHRDX,1SARDX,1SARDX,CLSHLDX,CLSHLDL,1RORDX,CLROLDX,CLRCLDX,CLRCRDX,CLRCRDL,CL实验1.7程序控制类指令⑴假如在下列程序的括号中分别填入指令:①LOOPL20②LOOPZL20③LOOPNZL20试说明在三种情况下,程序执行后,将AX,BX,CX,DX四个寄存器的内容填入下表。XOR AX,AXMOV BX,2MOV CX,4MOV DX,3L20:INC AXADC BX,AXSHR DX,1()HLT指令AXBXCXDXLOOPL20LOOPZL20LOOPNZL20⑵指令序列为:CMPAX,BXJXXL1请在能引起转移到L1单元的条件转移指令下面划钩,AX,BX的内容给定如下:AXBXJBJNBJBEJAJLJNLJLEJG1F52H1F52HFF82H007EH58BAH020EH09A0H1E97HFF5CHFF8BH8AEAHFC29H实验1.8DOS系统功能调用一、实验目的:掌握利用DOS/BIOS系统功能调用实现字符输入输出的方法二、实验原理:DOS功能调用是指中断类型号21H(INT21H)的调用。功能调用是0~57H(称为DOS功能调用)。INT21H功能调用分为字符输入,字符输出,磁盘控制,文件管理等种类。本实验着重了解字符输入输出DOS功能调用。常用的有读键盘及显示(功能号称01H),字符显示(功能号02H),内存字符串输出(功能号09H)无显示字符输入(功能号07H)等。三、实验内容:用01H号调用输入一个字符,用02H号调用显示输入的字符。用0H号调用结束程序。用DEBUG调试满足上述要求的程序。MOVAH,01HINT21HMOVDL,ALMOVAH,2HINT21HMOVAH,0HINT21H在DEBUG状态下输入上面程序,并且执行。此时屏幕显示两个相同的字符,观察第一个是不是01H号调用输入后显示的,第二个是不是02H号调用后显示的。用0AH号调用输入一个字符串,用09H号调用显示输入的字符串TAB DB50,50DUP(‘$’)LEA DX,TABMOV AH,0AH INT 21H LEA DX,TAB MOV AH,09H INT 21H实验1.9运算符与伪指令系统⑴将下列语句分配的存储空间及初始化的数据值填入表中:①A1DB‘BYTE’,12,12H,2DUP(0,?,3DUP(1,2),?)②A2DW3DUP(0,1,2),?,-5,‘BY’,‘TE’,256H③A3DW A1,$+6,A2-A1A1A2A3试总结DB,DW数据定义的特点。⑵对于下列的符号定义,分别指出下列指令的错误并改正。A1DB?A2DB10K1EQU1024K2=256MOVK1,AXMOVA1,AXMOVBX,A1MOV[BX],100; 将100送入A1单元CMPA1,A2K1EQU2048⑶对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?A1DB?A2DW10DUP(?)A3DB10DUP(?)A4DB‘XYZ’,‘123’①MOVAX,TYPEA1AX=②MOVAX,TYPEA2AX=③MOVAX,LENGTHA1AX=④MOVAX,LENGTHA2AX=⑤MOVAX,LENGTHA3AX=⑥MOVAX,LENGTHA4AX=⑦MOVAX,SIZEA2AX=⑧MOVAX,SIZEA3AX=软件实验部分第二部分汇编语言程序设计一.总体实验目的熟悉如何微机上进行编辑、汇编、链接、调试和运行汇编语言程序的过程;掌握分支程序设计、循环程序设计、子程序设计的方法;了解汇编语言与高级语言的接口。二.程序框架*.ASM文件的程序框架:程序框架中一般要定义一个数据段和一个代码段,根据需要还可以定义堆栈段和附加段。通常指令放在代码段,变量放在数据段。 DATA SEGMENT 在此加入数据定义 DATA ENDS STACK SEGMENTSTACK STA DB20DUP(?) TOP EQU$—STA STACK ENDS CODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX 在此加入指令段 MOV AX,4C00H INT 21HCODE ENDS END START 实验2.1汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DATA2为首的5个内存单元中,结果送回DATA1处。三.程序清单 DISP MACROX MOV DL,X MOV AH,02H INT 21H ENDM DATA SEGMENT DATA1 DB‘12732’ DATA2 DB‘06815’ N EQU$—DATA2 DATA ENDS STACK SEGMENTSTACK STA DB20DUP(?) TOP EQU$—STA STACK ENDS CODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX LEA SI,DATA1 ;☆ MOV BX,0 MOV CX,N CALL DISPL ;显示被加数 DISP ‘+’ LEA SI,DATA2 MOV BX,0 MOV CX,N CALL DISPL ;显示加数 DISP ‘=’ LEA DI,DATA1 MOV CX,N CALL ADDA ;调用加法子程序 LEA SI,DATA1 MOV BX,0 MOV CX,N CALL DISPL ;显示运算结果 DISP 0DH DISP 0AH MOV AX,4C00H INT 21H DISPL PROC ;显示子程序 DS1: MOV AH,02H MOV DL,[SI+BX] INT 21H INC BX LOOP DS1 RET DISPL ENDP ADDA PROC ;加法子程序 PUSH CX MOV BX,0 AD1:SUB BYTEPTR[SI+BX],30H SUB BYTEPTR[DI+BX],30H INC BX LOOP AD1 POP CX PUSH CX MOV BX,N—1 ;☆☆ CLC AD2: MOV AL,[SI+BX] ADC AL,[DI+BX] AAA MOV [DI+BX],AL DEC BX LOOP AD2 POP CX PUSH CX MOV BX,0 ;☆☆☆ AD3:ADD BYTEPTR[DI+BX],30H INC BX LOOP AD3 POP CX RET ;☆☆☆☆ ADDA ENDP CODE ENDS END START五.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件。2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。连接目标程序,产生可执行程序。TDEBUG调试可执行程序,记录数据段DS:0~DS:10的内容。进入TDEBUG程序后。执行程序至星号处DS:0H~DS:0AH的内容☆(CS:000FH)☆☆(CS:0076H)☆☆☆(CS:0086H)☆☆☆☆(CS:0090H)在操作系统状态下,运行程序,并记录屏幕显示内容。被加数加数屏幕显示内容127320681510732436916508717631六.思考题将上述程序改为5位数相加,结果为6位数的加法程序。(需考虑进位)简单叙述上机步骤,调试方法。实验2.2分支程序设计一.实验目的掌握分支结构程序的编制方法。二.实验内容与要求编制程序实现如下操作:设有10个学生成绩,分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并存放于S5、S6、S7、S8、S9、S10单元中。三.程序清单: ; 统计学生成绩 DATA SEGMENT GRADEDW95H,60H,75H,92H,71H,86H,54H,89H,83H,76H NEQU($—GRADE)/2 ORG30H S5 DW0 S6 DW0 S7 DW0 S8 DW0 S9 DW0 S10 DW0 DATA` ENDS ; STACK SEGMENTSTACK STA DB20DUP(0)TOPEQU$—STA STACKENDS ; CODE SEGMENT MAIN PROCFAR ASSUMECS:CODE,DS:DATA,SS:STACK START:PUSHDS SUBAX,AXPUSHAX MOVAX,DATA MOVDS,AX MOVCX,N LEABX,GRADE;成绩表首地址 COMPARE: MOVAX,[BX] CMPAX,60H;<60? JLFIVE CMPAX,70H ;<70? JLSIX CMPAX,80H ;<80? JLSEVEN CMPAX,90H ;<90? JLEIGHT CMPAX,100H ;=100 JNENINE INCS10 JMPCHA NINE:INCS9 JMPCHA EIGHT:INCS8 JMPCHA SEVEN: INCS7 JMPCHA SIX: INCS6 JMPCHA FIVE: INCS5 JMPCHA CHA: ADDBX,2 ;循环学生人数 LOOPCOMPARE RET MAIN ENDP CODE ENDS ENDSTART 执行程序后,将结果分别填入下列表中N(总人数)S5S6S7S8S9S10四.思考题计算出各等级成绩百分比。分别填入下面表的A、B、C、D、E、中增加统计平均成绩一项。平均成绩EDCBA实验2.3循环程序设计(一)1.循环程序的组成部分循环程序大体上由以下四个部分组成:初始化部分:为进入循环做准备。如设置指针地址及循环次数等。循环体部分:是循环程序的主体。可有若干条指令组成。循环修改部分:负责修改地址指针或变量的内容。以便为下一次循环作准备。循环控制部分:依据给定的循环次数或循环条件,判断是否继续循环。2.控制循环的方法。(1)计数控制法: 正计数控制法:从“0”或“1”开始不断递增计数,直到某一给定的值时停止循环;倒计数控制法:从一个给定的最大值开始不断递减计数。直到计数值为“0”停止循环。(常用的方法)(2)条件控制法:根据某一条件是否成立控制循环程序是否继续执行。(3)计数条件控制法的综合当单独使用计数控制法或单独使用条件控制法都不能圆满地解决循环控制问题时,可采用此综合控制法。一.实验目的掌握循环程序设计的方法(两重性循环结构)掌握正确分配与使用寄存器。二.实验内容与要求以GRADE为首地址的10个字的数组中保存有学生成绩。建立一个10个字的RNAK数组,并根据GRADE中的学生成绩将学生名次填入RANK数组中(提示:一个学生的名次等于成绩高于等于该学生的人数加1)。寄存器分配情况说明如下:AX存放当前被测学生的成绩BX存放当前被测学生的相对地址指针CX内循环计数值DX存放当前被测学生的名次计数值SI内循环测试时的地址指针DI外循环计数值三.程序清单(将程序补充完整) ; 建立学生成绩名次表 DATASEGMENT GRADE DW88H,75H,95H,63H,98H,78H,87H,73H,90H,60H COUNT EQU($-GRADE)/2 ORG20H RANK DW10DUP(?) DATA ENDS ; STACK SEGMENTSTACK STA DB20DUP(20H) TOP EQU$—STA STACK ENDS ; CODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACK START: MOVAX,DATA MOVDS,AX MOVAX,STACK MOVSS,AX MOVSP,TOP MOVDI,;成绩的个数 MOVBX,0 LOOP1: MOVAX,GRADE[BX] MOVCX,COUNT SI,GRADE;成绩的存放地址 NEXT: CMPAX,[SI] NO_COUNT INCWORDPTRRANK[BX];存放学生名次 NO_COUNT:ADDSI,2 NEXT ADDBX,2 DECDI LOOP1 MOVAX,4C00H INT21H CODE ENDS END START四.思考题1.改为通过键盘输入方式提供学生成绩。2.将成绩与名次在屏幕上显示。3.指出控制循环程序的方法,并划分该程序的四个组成部分。实验2.4循环程序设计(二)一.实验目的掌握循环程序结构的编程方法。掌握控制循环的方法。二.实验内容与要求内容:一个数组DATAX,其中的数据排列规律是:头三项是0,0,1,以后每项的值均是前三项之和。试将项值小于等于2000以前的各项数据填入数组DATAX中。算法:n≥4时:①an=an-1+an-2+an-3②an=2an-1—an-4要求:按上述两种算法编程。三.实验步骤自编程序,上机调试,完成上述功能。指出程序中的四个组成部分,结构形式及控制循环的方法。填写数组DATAX前十六项的数值。DS:0000HDS:0002HDS:0004HDS:0006HDS:0008HDS:000AHDS:000CHDS:000EHDS:0010HDS:0012HDS:0014HDS:0016HDS:0018HDS:001AHDS:001CHDS:001EH实验2.5子程序结构实验目的掌握子程序设计方法。掌握子程序的递归调用。实验内容与要求求数n的阶乘n!;主程序;入口参数:无;出口参数:BX存放n!MAIN:MOVAX,3;设n=3CALLFACTXI:MOVBX,DXHIL;阶乘子程序FACT;入口参数:AL中存放n;出口参数:DX中存放n!;所用寄存器:CXFACT PROC CMPAL,0 JNELLAMOVDL,1RETLLA:PUSHAXDECALCALLFACTX2:POPCXCALLMULTX3:MOVDX,AXRATFACTENDP;无符号字节数乘法子程序MULT;入口参数:CL,DL中各为一乘数;出口参数:AX中为乘积MULT:PROCMOVAL,DLMULDLRETMULTENDP我们可以看出,程序在递归调用过程中,用PUSH指令将参数3,2,1推进堆栈,而在返回过程中,调用乘法子程序,依次实现1!2!3!。三.思考题设n=4时,堆栈何时为最满?当SP的初始值为100H,堆栈最满时,SP=硬件实验部分硬件实验部分实验3可编程计数器/定时器8253可编程计数器/定时器(8253)既可作为计数器,又可作为定时器。它有3个独立编程的计数器0、计数器1、计数器2,它们均可独立地作为计数器和定时器。每个计数器都有6种工作方式,每种工作方式都是靠方式字来控制,从而产生不同方式的输出信号。一.实验目的1.加深对8253基本原理及工作方式的了解;2.掌握8253初始化编程的方法;3.学会通过62芯总线驱动器、译码器等线路,在微机外部扩展新的芯片。二.实验内容与要求计数方式:按下图虚线连接电路,将计数器0设置为方式0,计数器初值设置为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入个脉冲后,OUT0变为电平)。8253硬件原理图按要求将下列程序补充完整。***************************8253方式0计数器实验***************************io8253aequ283hio8253bequ280hcodesegmentassumecs:codestart: mov al,h ;设置8253通道0为工作方式0,二进制计数 mov dx,io8253a out dx,al mov dx,io8253b ;送计数初值 mov al,h out dx,allll:in al,dx ;读计数初值 call disp ;调显示子程序 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz lll mov ah,4ch ;退出 int 21hdispproc near ;显示子程序 push dx and al,0fh ;首先取低四位 mov dl,al cmp dl,9 ;判断是否<=9 jle num ;若是则为'0'-'9',ASCII码加30H add dl,7 ;否则为'A'-'F',ASCII码加37Hnum:add dl,30h mov ah,02h ;显示 int 21h mov dl,0dh ;加回车符 int 21h mov dl,0ah ;加换行符 int 21h pop dx ret ;子程序返回disp endpcode endsendstart定时方式:按下图完成下述连接,并将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率为HZ)。*********************8253分频实验*********************io8253aequ280hio8253bequ281hio8253cequ283hcodesegment assumecs:codestart: mov dx,io8253c mov al, ;使0通道为工作方式3 out dx,al mov ax, ;写入循环计数初值1000 mov dx,io8253 out dx,al ;先写入低字节 mov al,ah out dx,al ;后写入高字节 mov dx,io8253 mov al, ;设8253通道1工作方式2 out dx,al mov ax, ;写入循环计数初值1000 mov dx,io8253b out dx,al ;先写低字节 mov al,ah out dx,al ;后写高字节 mov ah,4ch ;程序退出 int 21hcode endsend start三.思考题1.将计数器0改为方式4(方式1,方式5),计数器初值设置为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。方式4:(当输入个脉冲后,OUT0变为电平)修改方式字为:方式1:(当输入个脉冲后,OUT0变为电平)修改方式字为:方式5:(当输入个脉冲后,OUT0变为电平)修改方式字为:2.使用8253的CNT0构成一个方波发生器,CLK0=15625HZ,再将OUT0信号通过CNT1进行5分频。输出如图所示的连续波形。1S5S
实验4可编程并行接口8255(一)一.实验目的1.掌握8255A并行接口的原理及编程方法。2.了解通用实验装置上的逻辑电平开关电路,掌握读取开关数据的方法。二.实验内容与要求1.并行接口8255的输入与输出(方式0)编程实现从8255的C口输入数据,再从A口输出。硬件连接:8255的C口接逻辑电平开关K0~K7,A口接LED灯L0~L7。具体连接如下图所示:编程提示:=1\*GB2⑴程序流程图:=2\*GB2⑵8255控制寄存器端口地址:28BH,A口的地址:288H,C口的地址:28AH。参考程序:;***************************************;;* 并行接口8255的输入与输出(方式0) *; ;**************************************;DATASEGMENTio8255aequ288hio8255bequ28bhio8255cequ28ahDATAENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,io8255bMOVAL,8BHOUTDX,AL ;设8255为A口输出,C口输入AGAIN:MOVDX,io8255cINAL,DX ;从C口输入一个数据MOVDX,io8255OUTDX,AL ;从A口输出自C口采到的数据MOVDL,0FFH ;判断是否有键按下MOVAH,06HINT21HJZAGAIN ;无按键,继续EXIT:MOVAH,4CH ;有按键,退出INT21H CODEENDSENDSTART实验5可编程并行接口8255(二)一.实验目的掌握通过8255A并行口传输数据的方法。二.实验内容与要求交通灯控制实验:模拟十字路口交通灯的变化,变化规律如下:南北路口的绿灯、东西路口的红灯同时亮5秒;南北路口的黄灯闪烁3次(黄灯1亮1灭为闪烁1次),每次1秒钟,同时东西路口红灯继续亮;南北路口的红灯、东西路口的绿灯同时亮5秒;南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁3次;转(1)重复。硬件连接:L7、L6、L5作为南北路口交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。如图所示:参考程序:;*************************************;;*十字路口红绿灯模拟演示程序*;;*端口各灯的设置:*;;*1红1黄1绿002红2黄2绿*;;*************************************;datasegmentio8255aequ28ahio8255bequ28bhportc1db24h,44h,04h,44h,04h,44h,04h;六个灯可能db81h,82h,80h,82h,80h,82h,80h;的状态数据db0ffh;结束标志dataends;结束标志stackssegmentdb100dup(?)stacksendscodesegmentassumecs:code,ds:data,SS:STACKS,es:datastart: movax,data movds,ax moves,ax movax,stacks movss,ax movdx,io8255b moval, outdx,al;设置8255为C口输出 movdx,io8255are_on: movbx,0on: moval,portc1[bx] cmpal,0ffh jzre_on outdx,al;点亮相应的灯 incbx movcx,20;参数赋初值 testal,;是否有绿灯亮 jzde1;没有,短延时 movcx,;有,长延时de1: movdi,;di赋初值de0: decdi;减1计数 jnzde0;di不为0 loopde1 pushdx movah,06h movdl,0ffh int21h popdx jzon;没有,转到onexit: movah,4ch;返回DOS int21hcodeendsendstart三.思考题1.将上述交通信号灯增加时间管理。(提示:东西方向时间间隔设定为60秒;南北方向时间间隔设定为30秒。)2.将上述两种交通信号灯管理方式,通过开关控制将两种管理方式进行切换。
实验6可编程串行接口8251一.实验目的1.了解串行通讯的工作原理和通讯方法;2.掌握串行接口芯片8251的工作原理和编程方法。二.实验内容与要求1.按图连接好电路,8251芯片插入通用插座上,其中8253计数器用于产生8251所需的发送和接收时钟,TXD和RXD连在一起;2.编程:从键盘输入一个字符,并将其ACSII码加1后发送出去,再接收回来,并在屏幕上显示,实现自发自收。三.实验提示1.图示电路8251的控制端口地址为2B9H,数据端口地址为2B8H。2.8253计数器的计数初值=时钟频率/(波特率*波特率因子),波特率若选1200,波特因子若选16,则计数初值为。3.收发采用查询方式。四.实验参考程序;************************;;*8251串行通讯(自发自收)*;;************************;datasegmentio8253aequ280hio8253b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年拉萨考从业资格证货运试题
- 企业安全生产中的安全教育政策与操作
- 办公团队建设团队拓展活动主题晚宴策划
- 创业团队中冲突解决与协调策略
- 健康医疗中心的音乐放松环境设计与实践研究
- 2016-2021年老年代步车市场前景预测及投资规划分析报告(目录)
- 农民应对生活压力的心理策略
- 公共管理-答案
- 企业研发团队如何进行专利申请与维护
- 亲子共学-学前儿童情绪调节技巧
- 矿岩的基本性质及其与矿山安全生产的关系
- PMC培训PMC运作详解物料计划管理培训教程课件
- 2023年关爱孤儿座谈会讲话稿
- 浅谈农村公路路长制推行中存在的问题及建议
- 深圳市专业标准化技术委员会委员登记表【模板】
- 手机硬件测试标准
- 自然灾害引发的生产安全事故现场处置方案
- 21ZJ111 变形缝建筑构造
- 简明精神病评定量表
- 新疆巴里坤索尔巴斯陶金矿床成矿流体特征及矿床成因
- 模拟示波器原理及使用课件
评论
0/150
提交评论