微型计算机原理与接口技术实验课讲义.doc_第1页
微型计算机原理与接口技术实验课讲义.doc_第2页
微型计算机原理与接口技术实验课讲义.doc_第3页
微型计算机原理与接口技术实验课讲义.doc_第4页
微型计算机原理与接口技术实验课讲义.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

实验一 汇编语言编辑环境与调试命令的认识一、 实验目的1、 熟悉EDIT编写汇编程序的环境;2、 学习debug调试命令。二、 实验仪器 TDN86/51教学实验系统,计算机三、 实验内容与步骤(1)、用记事本或EDIT进行汇编程序编辑可编辑汇编程序的环境很多,记事本和EDIT是其中常用的两种方法。进入记事本很简单,这里不再介绍。进入EDIT的方法:开始运行command进入DOS界面edit回车进入EDIT编辑环境编辑汇编程序程序完成后以“文件名.asm”(文件名不能是中文,一定要是字母,而字母不能超过8个,asm是扩展名)存盘。.asm文件是不能运行的,需要把它变成可执行文件(.exe)。它的变化过程是: Masm link .asm.obj.exe练习1:在EDIT中编写一个程序,实现数据段中的两个32位数X、Y相加,结果存到数据段Z中。并以dadd.asm文件名保存。 (2)、目标文件(.obj)、可执行文件(.exe)的产生运行masm程序,产生 .obj文件,并且检查程序是否有语法错误。如果有语法错误,会有提示,在哪一行有什么样的错误(是英文提示)。根据提示,再进入EDIT中,打开源文件进行修改,直到没有语法错误为止。运行link程序,产生 .exe可执行文件。通过运行可执行文件,观察该程序是否能实现相应的功能。如若不能,进入debug进行调试。(3)、debug调试工具debug是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。1、 debug程序的调用在DOS的提示符下,可键入命令:Cdebug 路径文件名.exe(回车)其中,文件名是被调试文件的名字(注意:该文件一定要是.exe文件)。如用户键入文件名,则debug将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用debug命令N和L把需要的文件装入存储器后在进行调试。在debug程序调入后,将出现提示符-,此时就可用debug命令来调试程序。2、 debug的主要命令 显示存储单元的命令 D,格式为:-D 地址 从指定地址起显示80个字节的内容;-D 范围 显示所指定范围内的内容,指定范围为起始地址和终止地址;-D显示从上一个D命令的最后一个单元后面的80个字节的内容,或者在D未使用过的情况下,显示DS:0100为起始的内容。例如,按指定范围显示存储单元内容的方法为:-d 100 120 其中100 120 给出显示存储单元的范围。这里没有指定段地址,D命令自动显示DS段的内容。 修改存储单元内容的命令输入命令E,有两种格式如下:-E 地址 内容表 用指定的内容表去修改指定地址开始的存储器中内容例如-E DS:120 F3A5XYZ96表示用F3、A5、X、Y、Z、96共6个字节代替了DS:120至DS:125中的内容-E 地址 逐个单元修改内容例如 -E CS:100 屏幕显示为: 18E4:0100 89.- 用户可以键入78,修改次内容,再键入空格键显示下一个内容,不修改时可用空格键跳过,逐个修改存储器内容,直到回车键结束。 填入命令格式F-F 范围(内容表) 将内容表中内容填入所指定的范围。例如-F 18E4:0200 L10 00将0200H单元开始的16个字节全部填入0。若内容表中字节数超过指定范围,则忽略超过项,若内容表中字节数小于指定范围,则反复填入,直到填满所有单元为止。 检查和修改寄存器命令R格式有三种:-R 显示CPU内所有寄存器内容和标志位状态-R 寄存器名 显示和修改某一个寄存器内容例如-R AX 屏幕显示:AX 1200 : ;AX当前内容为1200,若不修改则按回车键,否则键入要修改的内容。如:-R BXBX 0369:059F则把BX寄存器的内容修改为059F。RF 显示和修改标志位内容例如 -RF 屏幕显示:OV DN EI NG ZR AC PE CY 此时,如不修改其内容可按Enter键,否则,可键入欲修改的内容,如:OV DN EI NG ZR AC PE CY PONZDINV即可,可见键入的顺序可以是任意的。 运行命令G格式为:-G =地址1 地址2 地址3其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。 跟踪命令T格式有两种:-T=地址 单条指令跟踪,执行指定地址的一条指令,并显示CPU所有寄存器内容,标志位的状态,及下条指令的地址和内容。若命令中没有指定地址,则从当前CS:IP开始执行。-T=地址 N,N为多条指令跟踪,从指定地址开始执行指令,共执行指定的N条后停止,每执行一条就显示CPU中所有寄存器内容,标志位的状态及下条指令的地址和内容。汇编命令A格式为:-A 地址该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中,必须注意:debug把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明。反汇编命令 U有两种格式:-U地址 从指定地址开始,反汇编32个字节,若没有指定地址,则接着上一个U命令继续向下反汇编,若没有用过U命令,则从CS:0100开始反汇编。-U 范围 对指定范围的存储单元反汇编,可指定起始地址,结束地址,也可指定起始地址及长度。例如:U 1CE2:0110 011A 或 U 1CE2:0110 L0B 效果是一样的。命名命令N命名命令N常与装入命令L一起使用如: N 路径文件名.exe L 可把文件名.exe装入存储器。退出debug命令Q格式为:Q它退出debug,返回DOS。 例:在debug中,汇编一段程序,实现两个32位数的加法,12345678H+3456789AH=? 用E命令在 DS:0120存储单元开始存放78H、56H、34H、12H、9AH、78H、56H、34H, 用汇编命令A编写一段程序如下: Mov ax,0120h Mov dx,0122h Add ax,0124h Adc dx,0126h Mov 0128h,ax Mov 012ah,dx 然后用G命令运行该程序段 G=起始地址 终止地址 最后用D命令查看结果 D DS:0120 012C 练习2:在debug中,汇编一段程序,实现两个32位数的减法,3456789Ah-12345678h=?实验二 汇编语言程序的编辑与调试实验一、实验目的1、学会用EDIT编写汇编语言程序;2、学会使用MASM产生目标文件和可执行文件;3、掌握在DEBUG下汇编程序的调试。二、实验仪器 TDN86/51教学实验系统,计算机三、实验内容与步骤1、内容在BCD1单元中,压缩存放着两个BCD码。现编写一程序,将压缩的BCD码转变成两个非压缩的BCD码,分别存放到result和result+1单元中。 2、步骤在EDIT环境下编写能实现上述功能的汇编源程序,并以文件名为BCD1.ASM保存。执行MASM.EXE文件,检查程序中是否有语法错误;若有错,则返回到EDIT中,打开源程序进行修改,直到无语法错误为止,同时产生相应的目标文件。执行LINK.EXE文件,产生相应的可执行文件;打开DEBUG调试环境,装入相应的可执行文件,并用反汇编命令检查可执行文件是否已装入;单步运行每条指令,观察运行结果;整个程序运行完成后,到指定的存储单元中观察运行结果是否符合要求。四、 思考题1、 执行MASM.EXE文件的主要作用是什么?2、 在实验中,你用了哪些DEBUG命令,目的是什么?实验三 综合程序的设计、编制及调试一、实验目的 1、掌握分支、循环、子程序调用等基本的程序结构;2、学习综合程序的设计、编制及调试。二、实验仪器 TDN86/51教学实验系统,计算机三、实验内容与步骤1、内容 在数据段的buffer字单元中存放着一个16位二进制数,编写一个程序把buffer中的内容用十六进制显示出来。 2、步骤 程序流程图按流程图编写程序上机调试,实现题目要求的功能四、思考题编程显示F000:0000存储单元的内容,显示形式为:“F000:0000 90 ”。画出流程图,写出源代码,上机调试通过,实现相应功能。附件1:实验源程序data segment string1 db 0dh,0ah,please input 16-bit binary number,0dh,0ah,$ string2 db 0dh,0ah,your input has mistake. string3 db 0dh,0ah, do you want to input again(Y/N)?,0dh,0ah,$ string4 db binary to hexadecimal:,0dh,0ah,$data ends35stack segment stack dw 256 dup(?) top label wordstack endscode segment assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,offset top next: mov dx,offset string1 mov ah,09h int 21h mov cx,16 xor bx,bx rota: shl bx,1 mov ah,01h int 21h and al,0fh jz rota1 cmp al,1 jnz again or bx,01h rota1:loop rota mov dl,B mov ah,02h int 21h mov dl,0dh int 21h mov dl,0ah int 21h jmp l4 again:mov dx,offset string2 mov ah,09h int 21h l5: mov ah,08h int 21h and al,0dfh cmp al,Y jz next jmp exit l4: call htodis mov dx,offset string3 mov ah,09h int 21h jmp l5 exit: mov ah,4ch int 21h htodis proc mov dx,offset string4 mov ah,09h int 21h mov ch,4 l2: mov cl,4 rol bx,cl mov al,bl and al,0fh add al,30h cmp al,39h jbe l1 add al,07h l1: call display dec ch jnz l2 mov dl,H mov ah,2 int 21h ret htodis endp display proc mov dl,al mov ah,2 int 21h ret display endp code ends end start 附件2:思考题源程序data segment string db 0dh,0ah,please input address,0dh,0ah,$ string1 db 0dh,0ah,0dh,0ah,do you want to input again(y/n)? ,0dh,0ah,$data endsstack segment stack dw 256 dup(?) top label wordstack endscode segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,offset top next: mov dx,offset string mov ah,9 int 21h call reci mov es,bx mov dl,: mov ah,2 int 21h call reci mov si,bx mov dl, mov ah,2 int 21h mov di,8 l5:mov bl,es:si call htodisb inc si dec di jnz l5 mov dl,- mov ah,2 int 21h mov dl, int 21h mov di,8 l6: mov bl,es:si call htodisb inc si dec di jnz l6 mov dx,offset string1 mov ah,9 int 21h mov ah,8 int 21h and al,0dfh cmp al,Y jnz exit jmp next exit: mov ah,4ch int 21h htodisb proc mov ch,2 mov cl,4 l3: rol bl,cl mov al,bl and al,0fh add al,30h cmp al,39h jbe l4 add al,07h l4:mov dl,al mov ah,2 int 21h dec ch jnz l3 mov dl, mov ah,2 int 21h ret htodisb endp reci proc xor bx,bx mov ch,4 mov cl,4 l8: shl bx,cl mov ah,1 int 21h sub al,30h cmp al,9h jbe l7 and al,0dfh sub al,7 l7: or bl,al dec ch jnz l8 ret reci endpcode ends end start实验四 DOS系统功能调用实验一、实验目的1、学习DOS系统功能调用的使用方法;2、重点掌握键盘输入和输出显示的DOS系统功能调用的方法。二、实验仪器 TDN86/51教学实验系统,计算机三、实验内容和步骤 无论是用户程序还是DOS系统本身,都离不开输入/输出操作,为了方便用户,PC DOS系统将输入/输出管理程序编成一系列子程序,不仅系统可以使用,用户也可以像调子程序一样方便地使用它们。调用系统提供的子程序,通常称为系统功能调用。DOS系统功能调用的方式是通过执行一条软中断指令 INT 21H 实现的。当寄存器AH中设置不同的值时,该指令将完成不同的功能,我们称AH中设置的内容为功能号。通过下面的编程练习,学会DOS系统功能1、2、7、8、9、A的调用方法。1、内容 从键盘上输入一组字符串,将其送入输入缓冲区,把字符串中小写的字符转换成大写后,再显示这组字符串。流程图如下:2、步骤按流程图编写程序上机调试,实现题目要求的功能思考题:把上题中输入字符串中的最小字符和最大字符分别显示出来。附件:data segment string1 db 0dh,0ah,please input string,0ah,0dh,$ string2 db 0dh,0ah,do you want to input string again(Y/N)?,0ah,0dh,$ buffer db 40h,? buffer1 db 40h dup(?)data endscode segment assume cs:code,ds:data start:mov ax,data mov ds,ax again: mov dx,offset string1 mov ah,9 int 21h mov dx,offset buffer mov ah,0ah int 21h mov al,buffer+1 cbw mov bx,offset buffer1 add bx,ax mov cx,ax mov byte ptr bx,$ mov dx,offset buffer1 mov ah,9 int 21h mov bx,offset buffer1 l1: mov al,bx cmp al,a jb l2 cmp al,z ja l2 sub al,20h mov byte ptr bx,al l2: inc bx loop l1 mov dl,0ah mov ah,2 int 21h mov dl,0dh mov ah,2 int 21h mov dx,offset buffer1 mov ah,9 int 21h mov dx,offset string2 mov ah,9 int 21h mov ah,1 int 21h and al,0dfh cmp al,Y jz again mov ah,4ch int 21hcode ends end start实验五 综合编程练习一、实验目的综合运用分支、循环、子程序和DOS系统功能调用编写程序;二、实验仪器 TDN86/51教学实验系统,计算机三、实验内容和步骤 1、内容从键盘输入一个夹带有若干个空格的字符串,显示第一个空格的位置(the first blank position is:)和字符串长度(the length of the string is : ),开始的空格不计算在字符串长度内。若输入的字符串中没有空格,显示“there isnt any blank in the string”提示,同时显示该字符串的长度。完成后提示是否还要继续( do you want to input string again(Y/N)?),按Y继续,其他退出。编写一程序实现上述功能。 2、步骤自己画出流程图,写出符合要求的程序,上机调试通过。四、思考题如若要显示字符串中空格的个数,上述程序如何修改。假定有一最大长度为80个字符的字符串已定义为字节变量STRING,试编写一程序段,找出第一个空格的位置(00H至4FH表示),并显示出来。统计该串不包括前导空的实际长度(不包括回车符),统计结果显示出来。data segment string1 db 0dh,0ah,please input string,0dh,0ah,$ string2 db 80 db ? string3 db 80 dup(?) string4 db 0dh,0ah,the string has not blank,0dh,0ah,$ string5 db 0dh,0ah,do you want to input string again(Y/N)?,0dh,0ah,$ string6 db 0dh,0ah,the first blank position is:$ string7 db 0dh,0ah,the length of the string is:$data endsstack segment stack dw 256 dup (?) top label wordstack endscode segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,offset top again: mov dx,offset string1 mov ah,9 int 21h mov dx,offset string2 mov ah,0ah int 21h mov al,string2+1 cbw mov cx,ax mov al, xor bx,bx next: cmp al,string3bx jz l1 inc bx loop next mov dx,offset string4 mov ah,9 int 21h jmp l4;* l1: mov dx,offset string6 mov ah,9 int 21h call display;* l4: mov dx,offset string7 mov ah,9 int 21h call length1 mov dx,offset string5 mov ah,9 int 21h mov ah,1 int 21h and al,0dfh cmp al,Y jz again exit:mov ah,4ch int 21h;* display proc push cx mov ch,2 l3: mov cl,4 rol bl,cl mov dl,bl and dl,0fh cmp dl,9 ja l2 add dl,30h jmp dis1 l2:add dl,37h dis1 :mov ah,2 int 21h dec ch jnz l3 mov dl,H mov ah,2 int 21h pop cx ret display endp length1 proc push bx push si push ax mov bl,string2+1 mov si,offset string3 mov al, l7:cmp al,si jnz l6 dec bl inc si cmp byte ptr si,$ jz l6 jmp l7 l6: call display pop ax pop si pop bx ret length1 endpcode ends end start实验六 中断特性及8259应用编程实验一、 实验目的1、 认识TDN86/51系统的中断特性。2、 掌握8259中断控制器的工作原理。3、 掌握8259可编程中断控制器的应用编程。4、 学习掌握8259级联方式的使用方法。5、 学习在接口实验单元上构造连接实验电路的方法。二、 实验设备1、 TDN86/51教学实验系统,计算机2、 排线、导线若干三、 实验内容及步骤(一) 系统中的8259芯片 1、8259可编程中断控制器介绍中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断向量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。8259A的编程,就是根据应用需要将初始化命令字ICW1ICW4和工作命令字OCW1OCW3分别写入初始化命令寄存器组和工作命令寄存器组。写初始化命令字ICW的流程如图6-1所示,ICW1ICW4各命令字格式如表6-1所示,OCW1OCW3各命令字格式如图6-2所示表6-1 8259A的初始化命令字ICWICW1ICW2ICW3(主)ICW3(从)ICW4各位含义D01:需要ICW40:不要ICW4设为01:IRQi线上有级联从片0:无级联从片与主片IRQi对应的从片的识别码,IRQ0为000,IRQ1为001,IRQ7为1111:8086/8088模式0:8080/8085模式D11:单片82590:多片82591:自动EOI0:正常EOID28086/8088中不用,设为01:主82590:从8259D3中断请求信号触发方式1:电平触发0:边沿触发T7T3中断类型号的高5位由用户来设定不用1:缓冲方式0:非缓冲方式D4ICW1标志位:11:特殊嵌套方式 0:一般嵌套方式D58086/8088中不用,设为0不用D6D7系统设定值13H08H-0DH系统口地址20H21H21H21H 2、系统中的8259A芯片系统中的8259A芯片工作于单片方式,但可由用户扩展接成级联方式。其线路如图6-3所示。图中的圈点表示此为排针形式引出脚。系统启动时,8259A被初始化,其初始化是通过系统中的初始化程序设置初始化命令字ICW来实现的。系统初始化时,规定0#和4#中断源分别提供给时钟和与PC微机联机的串口通讯,用户可以使用其余的中断源。在进入监控后,只有4#中断源处于开启状态,其他中断源都被屏蔽了。中断向量地址于中断号之间的关系如表6-2。 表6-2中断请求信号引脚IR0IR1IR2IR3IR4IR5IR6IR7中断类型号08H09H0AH0BH0CH0DH0EH0FH向量地址20H23H24H27H28H2BH2CH2FH30H33H34H37H38H3BH3CH3FH说明可用可用可用串口2串口1可用可用可用3、接口实验单元中的级联实验用8259A芯片除系统中的8259A芯片外,在接口实验单元中专门提供了另一片8259A芯片,以便进行8259级联实验。其线路如图6-4所示4、接口实验单元中的R-S触发器电路(二) 实验内容1、8259应用实验(1)按图6-6所示实验线路编写程序,使每次响应外部中断IRQ7时,显示字符“7”,中断10次后,程序退出。实验(1)参考程序:code segment assume cs:codestart: ;中断服务程序的入口地址放入中断向量表 cli push ds xor ax,ax mov ds,ax mov si,4*0fh mov ax,offset irq7 add ax,2000h mov word ptr si,ax mov ax,0 mov word ptr si+2,axpop ds ;8259A初始化 mov al,13h ;设置ICW1 out 20h,al mov al,08h ;设置ICW2 out 21h,al mov al,09h ;设置ICW4 out 21h,al mov al,6eh ;设置OCW1 out 21h,al mov cx,0ah sti a: jmp a ;等待中断;中断服务程序 irq7 proc near mov ax,0137h int 10h mov ax,0120h int 10h dec cx jnz l1 mov al,0eeh out 21h,al ;写OCW1,屏蔽IRQ7 l1: mov al,20h out 20h,al ;发中断结束命令 iret irq7 endp code ends end start2、实验(1)步骤(1)按图6-6 连接实验线路。(2)输入程序并检查无误,经汇编、连接后装入系统。(3)G=0000:2000运行程序。(注意:程序中8259中断向量地址为绝对地址,已定义为段地址CS=0000H,偏移量地址IP=2000H,故装载时一定按此填入CS与IP地址,后面实验不再重述。)(4)重复按KK2微动开关,显示屏上应显示“7”,直到按10次后,系统处于停机状态,用CTRL+C返回监控。3、8259应用实验(2)按图6-8所示实验线路,编写程序,完成下面的要求:当无中断请求时,执行主程序(主程序为:延时显示字符串“)main”),若有中断请求,则执行其中断服务程序(按KK1引起IRQ6中断,将延时显示10个“)6”;按KK2引起IRQ7中断,将延时显示10个“)7”)。若正在执行较低级的中断服务程序,则允许比它优先级高的中断被响应(IRQ6IRQ7)。自己画出程序流程图,写出实验程序,实现相应功能。参考程序:stack segment stack dw 64 dup(?)stack endsdata segment disps db main ,00hdata endscode segment assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax ;分别把irq7和irq6中断服务程序的入口地址放入中断向量表中 cli push ds xor ax,ax mov ds,ax mov si,4*0fh mov ax,offset irq7 add ax,2000h mov word ptr si,ax mov ax,0 mov word ptr si+2,ax mov si,4*0eh mov ax,offset irq6 add ax,2000h mov word ptr si,ax mov ax,0 mov word ptr si+2,ax pop ds ;8259A初始化 mov al,13h ;设置ICW1 out 20h,al mov al,08h ;设置ICW2 out 21h,al mov al,09h ;设置ICW4 out 21h,al mov al,2eh ;设置OCW1 out 21h,al sti;执行主程序不断显示main_ again: mov cx,0fh next: mov bx,offset disps mov ah,06h int 10h call delay loop next mov ax,010ah int 10h mov ax,010dh int 10h jmp again ;中断服务程序 irq7: push ax push cx sti mov cx,0ah l1: mov ax,0137h int 10h mov ax,0120h int 10h call delay loop l1 cli pop cx pop ax mov al,20h out 20h,al sti iret irq6: push ax push cx sti mov cx,0ah l2: mov ax,0136h int 10h mov ax,0120h int 10h call delay loop l2 c

温馨提示

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

评论

0/150

提交评论