《2022年微型计算机原理与接口技术实验课讲义.docx》由会员分享,可在线阅读,更多相关《2022年微型计算机原理与接口技术实验课讲义.docx(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 试验一 汇编语言编辑环境与调试命令的熟识一、试验目的1、 熟识 EDIT 编写汇编程序的环境;2、 学习 debug 调试命令;二、试验仪器TDN86/51 教学试验系统,电脑三、试验内容与步骤1、用记事本或 EDIT 进行汇编程序编辑可编辑汇编程序的环境许多,记事本和 这里不再介绍;EDIT 是其中常用的两种方法;进入记事本很简洁,进入 EDIT 的方法:开头运行command进入 DOS 界面 edit 回车进入 EDIT 编辑环境编辑汇编程序程序完成后以“ ”文件名不能是中文,肯定要是字母,而字母不能超过 8个, asm 是扩展名存盘;.
2、asm 文件是不能运行的,需要把它变成可执行文件Masm link .asm .obj .exe .exe;它的变化过程是:练习 1:在 EDIT 中编写一个程序,实现数据段中的两个 32 位数 X 、Y 相加,结果存到数据段 Z 中;并以 dadd.asm文件名储存;2、目标文件.obj 、可执行文件.exe的产生运行 masm 程序,产生 示,在哪一行有什么样的错误直到没有语法错误为止;运行 link 程序,产生.obj 文件,并且检查程序是否有语法错误;假如有语法错误,会有提是英文提示 ;依据提示, 再进入 EDIT 中,打开源文件进行修改,.exe 可执行文件;通过运行可执行文件,观看
3、该程序是否能实现相应的功能;如假设不能,进入 debug 进行调试;3、 debug 调试工具debug 是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员供应了特别有效的调试手段;1、 debug 程序的调用在 DOS 的提示符下,可键入命令:Cdebug 路径 文件名 .exe回车其中,文件名是被调试文件的名字留意:该文件肯定要是.exe 文件;如用户键入文件名,就 debug 将指定的文件装入储备器中,用户可对其进行调试;假如未键入文件名,就用户可以用debug 命令 N 和 L 把需要的文件装入储备器后在进行调试;在 debug 程序调入后,将显现提示符-,此时
4、就可用debug 命令来调试程序;2、 debug 的主要命令 显示储备单元的命令 D,格式为:-D 地址 从指定地址起显示 80 个字节的内容;-D 范畴 显示所指定范畴内的内容,指定范畴为起始地址和终止地址;-D 显示从上一个 D 命令的最终一个单元后面的 80 个字节的内容, 或者在 D 未使用过的情形下,显示 DS:0100 为起始的内容;例如,按指定范畴显示储备单元内容的方法为:-d 100 120 1 名师归纳总结 - - - - - - -第 1 页,共 47 页精选学习资料 - - - - - - - - - 其中 100 120 给出显示储备单元的范畴;这里没有指定段地址,D
5、 命令自动显示DS 段的内容; 修改储备单元内容的命令输入命令 E,有两种格式如下:-E 地址内容表 用指定的内容表去修改指定地址开头的储备器中内容例如-E DS:120 F3A5 XYZ 96 表示用 F3、A5 、 X 、 Y 、 Z 、96 共 6 个字节代替了-E 地址 逐个单元修改内容例如-E CS:100 屏幕显示为:DS: 120 至 DS:125 中的内容用户可以键入 78 ,修改次内容,再键入空格键显示下一个内容,不修改时可用空格键跳过,逐个修改储备器内容,直到回车键终止;填入命令格式F 将内容表中内容填入所指定的范畴;-F 范畴内容表例如-F 18E4:0200 L10 0
6、0 将 0200H 单元开头的 16 个字节全部填入 0;假设内容表中字节数超过指定范畴,就忽视超过项,假设内容表中字节数小于指定范畴,就反复填入,直到填满全部单元为止;检查和修改寄存器命令R 格式有三种:-R 显示 CPU 内全部寄存器内容和标志位状态-R 寄存器名 显示和修改某一个寄存器内容例如-R AX 屏幕显示:AX 1200 :; AX 当前内容为 1200,假设不修改就按回车键,否就键入要修改的内容;如:-R BX BX 0369 : 059F 就把 BX 寄存器的内容修改为 059F;RF 显示和修改标志位内容例如-RF 屏幕显示:OV DN EI NG ZR AC PE CY
7、此时,如不修改其内容可按Enter 键,否就,可键入欲修改的内容,如:OV DN EI NG ZR AC PE CY PONZDINV 即可,可见键入的次序可以是任意的;运行命令G 格式为:-G = 地址 1 地址 2 地址 3 其中,地址 1 指定了运行的起始地址,如不指定就从当前的 CS:IP 开头运行;后面的地址为断点地址,当指令执行到断点时,就停止执行并显示当前全部寄存器及标志位的内容,和下一条将要执行的指令;2 名师归纳总结 - - - - - - -第 2 页,共 47 页精选学习资料 - - - - - - - - - 跟踪命令T 格式有两种:-T= 地址 单条指令跟踪,执行指定
8、地址的一条指令,并显示 CPU 全部寄存器内容,标志位的状态,及下条指令的地址和内容;假设命令中没有指定地址,就从当前 CS:IP 开头执行;-T= 地址 N,N 为多条指令跟踪,从指定地址开头执行指令,共执行指定的 N 条后停止,每执行一条就显示 CPU 中全部寄存器内容,标志位的状态及下条指令的地址和内容;汇编命令 A 格式为:-A 地址该命令答应键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开头的储备区中,必需留意:debug 把键入的数字均看成十六进制数,所以如要键入十进制数,就其后应加以说明;反汇编命令 U 有两种格式:-U 地址 从指定地址开头,反汇编 32 个
9、字节,假设没有指定地址,就接着上一个 U 命令继续向下反汇编,假设没有用过 U 命令,就从 CS:0100 开头反汇编;-U 范畴 对指定范畴的储备单元反汇编,可指定起始地址,终止地址,也可指定起始地址及长度;例如:U 1CE2 :0110 011A 或 U 1CE2 :0110 L0B 成效是一样的;命名命令N 命名命令 N 常与装入命令L 一起使用如:L 可把文件名 .exe 装入储备器;退出 debug 命令 Q 格式为:Q 它退出 debug,返回 DOS;例:在 debug 中,汇编一段程序,实现两个32 位数的加法, 12345678H+3456789AH= ?用 E 命令在DS:
10、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 命令查看结果3 名师归纳总结 - - - - - - -第 3 页,共 47 页精选学习资料 - - - - - - - - - D DS:0120 012C 练习 2:在 debug 中,汇编一段程序,实现两个32 位数的减法,
11、3456789Ah-12345678h=. 试验二 汇编语言程序的编辑与调试试验一、试验目的1、学会用 EDIT 编写汇编语言程序;2、学会使用 MASM 产生目标文件和可执行文件;3、把握在 DEBUG 下汇编程序的调试;二、试验仪器TDN86/51 教学试验系统,电脑 三、试验内容与步骤1、内容 在 BCD1 单元中,压缩存放着两个 BCD 码;现编写一程序,将压缩的 BCD 码转变成两个非压 缩的 BCD 码,分别存放到 result 和 result+1 单元中;2、步骤 BCD1.ASM 储存;在 EDIT 环境下编写能实现上述功能的汇编源程序,并以文件名为 执行 MASM.EXE
12、文件,检查程序中是否有语法错误;假设有错,就返回到 EDIT 中,打开 源程序进行修改,直到无语法错误为止,同时产生相应的目标文件;执行 LINK.EXE 文件,产生相应的可执行文件;打开 DEBUG 调试环境,装入相应的可执行文件,并用反汇编命令检查可执行文件是否已装入;单步运行每条指令,观看运行结果;整个程序运行完成后,到指定的储备单元中观看运行结果是否符合要求;四、摸索题1、 执行 MASM.EXE 文件的主要作用是什么?2、 在试验中,你用了哪些DEBUG 命令,目的是什么?4 名师归纳总结 - - - - - - -第 4 页,共 47 页精选学习资料 - - - - - - - -
13、 - 试验三 综合程序的设计、编制及调试一、试验目的 1、把握分支、循环、子程序调用等基本的程序结构;2、学习综合程序的设计、编制及调试;二、试验仪器 TDN86/51 教学试验系统,电脑 三、试验内容与步骤 1、内容在数据段的buffer 字单元中存放着一个16 位二进制数, 编写一个程序把buffer 中的内容用十六进制显示出来;2、步骤子程序调用显示子程序程序流程图开头Ch=4取数CL=4DL ALBX BUFFER调用子程序BX循环左移 4位调用 DOS 系统功能AL BL2,显示把十六位二进制数变成十六进制数并显示出来屏蔽 AL 中的高 4位返回终止 AL AL+30HAL=39H.
14、YNAL AL+07H调用显示子程序CHCH-1N CH=0?Y 返回5 名师归纳总结 - - - - - - -第 5 页,共 47 页精选学习资料 - - - - - - - - - 按流程图编写程序上机调试,实现题目要求的功能四、摸索题编程显示 F000:0000 储备单元的内容,显示形式为:“ F000:0000 90 ” ;画出流程图,写出源代码,上机调试通过,实现相应功能;附件 1:试验源程序data segment string1 db 0dh,0ah,please input 16-bit binary number,0dh,0ah,$ string2 db 0dh,0ah,y
15、our input has mistake. string3 db 0dh,0ah, do you want to input againY/N.,0dh,0ah,$ string4 db binary to hexadecimal:,0dh,0ah,$ data ends stack segment stack int 21h dw 256 dup. mov dl,0dh top label word int 21h stack ends mov dl,0ah code segment int 21h assume cs:code,ds:data,ss:stack jmp l4 start:
16、 mov ax,data again:mov dx,offset string2 mov ds,ax mov ah,09h mov ax,stack int 21h mov ss,ax l5: mov ah,08h mov sp,offset top int 21h next: mov dx,offset string1 and al,0dfh mov ah,09h cmp al,Y int 21h jz next mov cx,16 jmp exit xor bx,bx l4: call htodis rota: shl bx,1 mov dx,offset string3 mov ah,0
17、1h mov ah,09h int 21h int 21h and al,0fh jmp l5 jz rota1 exit: mov ah,4ch cmp al,1 int 21h jnz again htodis proc or bx,01h mov dx,offset string4 rota1:loop rota mov ah,09h mov dl,B int 21h mov ah,02h mov ch,4 6 名师归纳总结 - - - - - - -第 6 页,共 47 页精选学习资料 - - - - - - - - - l2: mov cl,4 mov ah,2 rol bx,cl
18、int 21h mov al,bl ret and al,0fh htodis endp add al,30h display proc cmp al,39h mov dl,al jbe l1 mov ah,2 add al,07h int 21h l1: call display ret dec ch display endp jnz l2 code ends mov dl,H end start 附件 2:摸索题源程序data segment string db 0dh,0ah,please input address,0dh,0ah,$ string1 db 0dh,0ah,0dh,0a
19、h,do you want to input againy/n. ,0dh,0ah,$ data ends stack segment stack dw 256 dup. top label word stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data l5:mov bl,es:si mov ds,ax call htodisb mov ax,stack inc si mov ss,ax dec di mov sp,offset top jnz l5 next: mov dx,offset str
20、ing mov dl,- mov ah,9 mov ah,2 int 21h int 21h call reci mov dl, mov es,bx int 21h mov dl,: mov di,8 mov ah,2 l6: mov bl,es:si int 21h call htodisb call reci inc si mov si,bx dec di mov dl, jnz l6 mov ah,2 mov dx,offset string1 int 21h mov ah,9 mov di,8 int 21h 7 名师归纳总结 - - - - - - -第 7 页,共 47 页精选学习
21、资料 - - - - - - - - - mov ah,8 mov ah,2 int 21h int 21h and al,0dfh ret cmp al,Y htodisb endp jnz exit reci proc jmp next xor bx,bx exit: mov ah,4ch mov ch,4 int 21h mov cl,4 htodisb proc l8: shl bx,cl mov ch,2 mov ah,1 mov cl,4 int 21h l3: rol bl,cl sub al,30h mov al,bl cmp al,9h and al,0fh jbe l7 a
22、dd al,30h and al,0dfh cmp al,39h sub al,7 jbe l4 l7: or bl,al add al,07h dec ch l4:mov dl,al jnz l8 mov ah,2 ret int 21h reci endp dec ch code ends jnz l3 end start mov dl, 8 名师归纳总结 - - - - - - -第 8 页,共 47 页精选学习资料 - - - - - - - - - 试验四 DOS 系统功能调用试验一、试验目的1、学习 DOS 系统功能调用的使用方法;2、重点把握键盘输入和输出显示的 二、试验仪器TD
23、N86/51 教学试验系统,电脑 三、试验内容和步骤DOS 系统功能调用的方法;无论是用户程序仍是 DOS 系统本身,都离不开输入 /输出操作,为了便利用户,PC DOS 系统将输入 /输出治理程序编成一系列子程序,不仅系统可以使用,用户也可以像调子程序一样便利地使用它们;调用系统供应的子程序,通常称为系统功能调用;DOS 系统功能调用的方式是通过执行一条软中断指令INT 21H 实现的; 当寄存器 AH 中设置不同的值时,该指令将完成不同的功能,我们称 AH 中设置的内容为功能号;通过下面的编程练习,学会DOS 系统功能 1、2、7、8、9、A 的调用方法;开头1、内容从键盘上输入一组字符串
24、,将其送入输入缓冲区,把字符串中调用 DOS系统功能 9显示 一个提示字符串“ Please input string”调用 DOS系统功能 0A接 收从键盘输入的一组小小写的字符转换成大写后,再显示这组字符串;流程图如下:2、步骤 按流程图编写程序 上机调试,实现题目要求的功能摸索题:把上题中输入字符串中的最小字符和最大字符分别显示 出来;写的字符串 ,并把它存放 在相应的空间里附件:input string 在字符串后加$data segment 调用 DOS系统功能 9显string1 db 0dh,0ah,please input string,0ah,0dh,$ string2 db
25、 0dh,0ah,do you want to 示这组字符串againY/N.,0ah,0dh,$ buffer db 40h,. buffer1 db 40h dup. data ends code 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 检查每个储备单元如是 小写字母转变为大写调用 DOS系统功能 9显 示转换后的这组字符串调用 DOS系统功能 9显示 一个提示字符串“ Do yo
26、u want to input string againY/N.”调用 DOS系统功能 1等待 一个字符的输入mov ah,0ah int 21h Y输入是N Y .mov al,buffer+1 cbw 终止9 名师归纳总结 - - - - - - -第 9 页,共 47 页精选学习资料 - - - - - - - - - mov bx,offset buffer1 add bx,ax mov cx,ax mov dl,0dh mov byte ptr bx,$ mov ah,2 mov dx,offset buffer1 int 21h mov ah,9 mov dx,offset buf
27、fer1 int 21h mov ah,9 mov bx,offset buffer1 int 21h l1: mov al,bx mov dx,offset string2 cmp al,a mov ah,9 jb l2 int 21h cmp al,z mov ah,1 ja l2 int 21h sub al,20h and al,0dfh mov byte ptr bx,al cmp al,Y l2: inc bx jz again loop l1 mov ah,4ch mov dl,0ah int 21h mov ah,2 code ends int 21h end start 10
28、 名师归纳总结 - - - - - - -第 10 页,共 47 页精选学习资料 - - - - - - - - - 试验五 综合编程练习一、试验目的综合运用分支、循环、子程序和 二、试验仪器DOS 系统功能调用编写程序;TDN86/51 教学试验系统,电脑 三、试验内容和步骤1、内容 从键盘输入一个夹带有假设干个空格的字符串,显示第一个空格的位置the first blank position is:和字符串长度 the length of the string is : ,开头的空格不运算在字符串长度内;假设输入的字符 串中没有空格,显示“there isn t any blank in
29、the string ” 提示,同时显示该字符串的长度;完成后提 示是否仍要连续do you want to input string againY/N. ,按 Y 连续,其他退出;编写一程序实现 上述功能;2、步骤 自己画出流程图,写出符合要求的程序,上机调试通过;四、摸索题 如假设要显示字符串中空格的个数,上述程序如何修改;假定有一最大长度为 80 个字符的字符串已定义为字节变量 STRING ,试编写一程序段, 找出第 00H 至 4FH 表示,并显示出来;统计该串不包括前导空的实际长度不包括回 一个空格的位置车符,统计结果显示出来;data segment string1 db 0dh
30、,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 againY/N.,0dh,0ah,$ string6 db 0dh,0ah,the first blank position is:$ string7 db 0dh,0ah,the length of the string is:$ data end
31、s stack segment stack next: mov ah,9 dw 256 dup . int 21h top label word mov dx,offset string2 stack ends mov ah,0ah code segment int 21h assume cs:code,ds:data,ss:stack mov al,string2+1 start: mov ax,data cbw mov ds,ax mov cx,ax mov ax,stack mov al, mov ss,ax xor bx,bx mov sp,offset top cmp al,stri
32、ng3bx again: mov dx,offset string1 jz l1 11 名师归纳总结 - - - - - - -第 11 页,共 47 页精选学习资料 - - - - - - - - - inc bx mov ah,2 loop next int 21h mov dx,offset string4 pop cx mov ah,9 ret int 21h display endp jmp l4 length1 proc ;* push bx l1: mov dx,offset string6 push si mov ah,9 push ax int 21h mov bl,stri
33、ng2+1 call display mov si,offset string3 ;* mov al, l4: mov dx,offset string7 l7:cmp al,si mov ah,9 jnz l6 int 21h dec bl call length1 inc si mov dx,offset string5 cmp byte ptr si,$ mov ah,9 jz l6 int 21h jmp l7 mov ah,1 l6: call display int 21h pop ax and al,0dfh pop si cmp al,Y pop bx jz again ret
34、 exit:mov ah,4ch length1 endp int 21h code ends ;* end start 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 12 名师归纳总结 - - - - - - -第 12 页,共 47 页精选学习资料 - - - - - - - - - 试验六 中断特性及
35、 8259 应用编程试验一、试验目的1、 熟识 TDN86/51 系统的中断特性;2、 把握 8259 中断掌握器的工作原理;3、 把握 8259 可编程中断掌握器的应用编程;4、 学习把握 8259 级联方式的使用方法;5、 学习在接口试验单元上构造连接试验电路的方法;二、试验设备1、 TDN86/51 教学试验系统,电脑 2、 排线、导线假设干 三、试验内容及步骤(一)系统中的 8259 芯片1、8259 可编程中断掌握器介绍 中断掌握器 8259A 是 Intel 公司专为掌握优先级中断而设计开发的芯片;它将中断源优先级排队、区分中断源以及供应中断向量的电路集于一片中,因此无需附加任何电
36、路,只需对8259A 进行编程,就可以治理8 级中断,并挑选优先模式和中断恳求方式,即中断结构可以由用户编程来设定;同时,在不需增加其他电路的情形下,通过多片 8259A 的级联,能构成多达64 级的矢量中断系统;8259A 的 编 程 , 就 是 根 据 应 用 需 要 将 初 始 化 命 令 字 ICW1ICW4 和 工 作 命 令 字OCW1OCW3 分别写入初始化命令寄存器组和工作命令寄存器组;写初始化命令字 ICW 的流程如图 6-1 所示, ICW1ICW4 各命令字格式如表 6-1 所示, OCW1OCW3 各命令字格式如图6-2 所示ICW1ICW2级联方式?NYICW3要IC
37、W4吗?NYICW4芯片就绪,接受中断恳求图6-1 8259A 初始化编程13 名师归纳总结 - - - - - - -第 13 页,共 47 页精选学习资料 - - - - - - - - - 表 6-1 8259A 的初始化命令字 ICW ICW1 ICW2 ICW3 主ICW3 从ICW4 1:8086/8088各D0 1:需要 ICW4 设为 0 1:IRQi 线上有与主片 IRQi 对模式应的从片的识0:8080/80850:不要 ICW4 D1 别码, IRQ0 为模式1:单片 8259 000,IRQ1 为1:自动 EOI 0:多片 8259 001, IRQ70:正常 EOI
38、D2 8086/8088 中不为 111 1:主 8259 用,设为 0 0:从 8259 中断恳求信号位D3 触发方式T7T3 中断类级联从片不用1:缓冲方式含1:电平触发0:无级联从片0:非缓冲方式义0:边沿触发1:特别嵌套方ICW1 标志位:型号的高 5 位式D4 由用户来设定0:一般嵌套方1 式D5 8086/8088 中不08H - - 不用D6 用,设为 0 D7 系统设13H 0DH 定值系统口20H 21H 21H 21H 地址A0 D7 D6 D5 D4 D3 D2 D1 D0OCW11M7M6M5M4M3M2M1M0A0 D7 D6 D5 D4 D3 D2 D1 D0OCW
39、20RSLEOI00L2L1L0A0 D7 D6 D5 D4 D3 D2 D1 D0OCW30ESMMSMM01PRRRIS图6-2 8259A 的OCW 命令字的格式2、系统中的 8259A 芯片系统中的 8259A 芯片工作于单片方式,但可由用户扩展接成级联方式;其线路如图 6-3 所示;图中的圈点表示此为排针形式引出脚;系统启动时,8259A 被初始化,其初始化是通过系统中的初始化程序设置初始化命令字ICW 来实现的;系统初始化时,规定0#和 4#中断源分别供应应时钟和14 名师归纳总结 - - - - - - -第 14 页,共 47 页精选学习资料 - - - - - - - - -
40、 与 PC 微机联机的串口通讯,用户可以使用其余的中断源;在进入监控后,只有 4#中断源处于开启状态,其他中断源都被屏蔽了;中断向量地址于中断号之间的关系如表6-2;IR08088INTR 系XD0D0IR0D0D0 D1IR0 IR1XD1D1IR1D1IR1XD2D2IR2D2IR2D2 D3 D4IR2 IR3 IR4XD3D3IR3统D3IR3XD4D4总IR4D4IR4XD5D5IR5线D5D5 D6IR5 IR6IR5XD6D6IR6D6IR6XD7D7IR7D7主8259IR7D7从8259IR7INT INT SP/ENINT CAS0INTAINTAINTASP/ENIOY1CSCAS0CSCS RD WR A0CAS0 CAS1 CAS2XIORRDRDCAS1XIOWCAS1WRWRCAS2XA0XA0 系统总线CAS2A0表 6-2 图6-3 系统中