8086实验指导书免费(精编版)_第1页
8086实验指导书免费(精编版)_第2页
8086实验指导书免费(精编版)_第3页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一系统认识实验一、实验目的掌握 tdn86/51 教学系统的基本操作二、实验设备tdn86/51 教学实验系统一台三、实验内容及步骤1. 系统认识实验1(1) 程序的输入与修改从 3500h 内存单元开始建立0-15 共 16 个数据。实验步骤a. 使用串行通讯电缆将实验系统与pc 微机相连。b. 将位于线路板右下角的系统状态选择开关拨至86 档,开启实验系统。c. 在系统软件所在目录下键入md86 ,选择对应串口号,进入集成操作软件环境,出现系统提示符“ >”。按下 f1 功能键,进入全屏幕编辑界面,按 alt+f 建立新文件 new ,即可开始输入源程序。实验程序及流程如下:st

2、ack segment stack;8088 宏汇编程序dw 64dup(?);定义堆栈段stack endscode segment;定义代码段assume cs:codestart:mov di,3500h;程序开始设数据区首址mov cx,0010h;字节数送入cx 中mov ax,0000hsahfa1:mov di,al;写入一字节inc di;修改地址指针inc ax;修改数据daa;十进制调整loop a1;未填完转移a2:jmp a2code ends;代码段结束end start;程序段结束d. 输入程序后,按f2 保存程序规定扩展名为*.asm ,使用 alt+x返回集成软

3、件环境。e. 按 f2,输入源程序名省略扩展名,系统默认为.asm ,对源程序进行汇编,生成目标文件 *.obj及错误信息文件*.m 。假设给出lst文件名则生成相应*.lst文件。f. 汇编无误后,按f3 输入文件名对汇编生成的*.obj文件进行连接,连接信息显示于屏幕上,生成相应*.exe可执行文件。g. 按 f5,输入 *.exe可执行文件名,填入程序段地址cs:0000及偏移地址ip :2000, pc开始将程序从磁盘装入到教学系统内存,提示装载完毕后使用u0000:2000命令进行反汇编,检查程序是否正确装入。显示信息键入信息>u20002000bf0035movdi,3500

4、u2003b91000movcx,0010uh. 当发现源程序输入错误或需要调整时,在调试界面下可用a 命令来修改,如修改2000句为 mov di,3500 的操作如下:显示信息键入信息>a2000 0000:2000movdi,35000000:2003(2) 运行程序系统提供了单步运行、设断点运行、连续运行等方式,具体操作如下:a. 单步运行: 其操作如下表, 每运行一条指令后会显示下一条待执行指令并以蓝底白字显示变化寄存器的内容,重复t或按f4 键就可一步一步地运行,直至程序结束。b. 连续运行:在“ >”提示符下键入 g=0000:2000 在系统默认段地址 cs=000

5、0情况下也可直接键入 g=2000可连续运行程序,在运行过程中,可通过 ctrl+c终止程序运行,返回监控状态;也可通过 ctrl+s暂停程序运行,按任意键继续。c. 断点运行:在程序中可用 b 命令定义断点,系统规定至多定义 10 个断点,例如: 显示信息键入信息>b 0 : 20091 : >上例中定义了2009 地址为断点,每次键入gb=0000:2000程序连续运行至断点时,程序中断并显示当前各寄存器内容。gb是 g 命令的扩充,表示含断点连续运行程序,断点仅当系统复位时清除。(3) 内存单元内容的显示:使用 d=0000:3500 可查看 3500h-350fh 单元中的

6、内容是否为0-15 共 16 个数。(4) 内存单元内容的修改:假设要修改某一单元内容,可进行如下操作,其中,“空格”键用于向待编辑单元的高地址方向移动地址,而“”键则向反方向移动地址;用来响应,就退出e 命令。显示信息键入信息>e35000000 :3500000_01space0000 :3500101_space0000 :3500202_0000 :3500303_>2. 系统操作练习2将内存 3500h 单元开始的0-15 共 16 个数据传递到3600h 单元开始的数据区中。实验程序及流程如下:stack segment stack dw 64dup(?)stack e

7、nds开始code segment assume cs:codestart:mov si,3500h;建立源地址指针mov di,3600h;建立目标地址指针mov cx,0008h;字数送入cx 寄存器中a1:mov ax,si;取源数据一字送入ax 中mov di,ax; 将源数据送入目标地址单元中inc si;修正指针inc siinc di inc didec cx;修改循环次数jnza1;判断是否传送完毕a2:jmp a2codeends;代码段结束endstart;程序段结束设数据源地址、目的地址、字节数取源数据一字到ax 中ax 送目标地址单元修改指针n传完否?y停机实验步骤(1

8、)输入程序并检查无误,经汇编、连接后装入系统。(2)e3500 , 在 3500-350f 单元中分别送入00、01、02。(3)g=0000:2000 , 运行以上程序,按ctrl+c中断,返回监控。(4)d3600 ,显示结果:360000 01 02。实验二数码转换编程及程序调试一、实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。2. 熟悉键盘使用方法。3. 熟悉调试程序的方法二、实验设备tdn86/51 教学实验系统一台三、实验内容及步骤电脑输入设备输入的信息一般是由ascii 码或 bcd 码表示的数据或字符,cpu 一般均用二进制进行计算或其他信息处

9、理,处理结果的输出又必须依照外设的要求变为ascii 码、bcd码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。电脑与外设间的数码转换关系如图2-1 所示,数码对应关系如表2-1 所示。键盘ascii 码ascii 码crt 显示光电机ascii 码主ascii 码打印机拨码开关bcd 码机段码多段显示数据开关二进制二进制位显示图 2-1数码转换关系二进制十六进制数bcd 码表 2-1二进制机器码数码对应关系ascii 码七段码共阳共阴00000000030h40h3fh10001000131h79h06h20010001032h24h5bh30011001133

10、h30h4fh40100010034h19h66h50101010135h12h6dh60110011036h02h7dh70111011137h78h07h81000100038h00h7fh91001100139h18h67ha101041h08h77hb101142h03h7chc110043h46h39hd110144h21h5ehe111045h06h79hf111146h0eh71h1. 将 ascii 码表示的十进制数转换为二进制数十进制表示为:nd10 nd n 110 n 1d100nid10ii 010di 代表十进制数1, 2, 3, 9, 0; 上式转换为:nid10i

11、i 0( dn10dn 1 )10d1 )10d 0 2开始定义源、目标地址定义转换位数nn-1 cx取第一位 ascii 码减去 30h乘 10加一位 ascii 码减 30hn传完否?y存结果并停机由式 2可归纳十进制数转换为二进制数的方法:从十进制数的最高位dn 开始作乘10 加次位的操作, 依次类推, 则可求出二进制数的结果。程序流程及参考程序如下:规定: 被转换的ascii 码十进制数存放在3500h-3504h 单元中,转换结果存在于3510h-3511h 单元中。stack segment stack dw 64 dup(?)stack endscode segment assu

12、me cs:codestart:mov si,3500h mov di,3510h mov bx,000ah mov cx,0004h mov ah,00hmov al,si sub al,30ha1:imul bxadd al,si+01 sub al,30h inc siloop a1 mov di,axa2:jmp a2code endsend start实验步骤( 1)输入程序并检查无误,经汇编、连接后装入系统。( 2)在 3500-3504h 单元存入十进制数12 的 ascii 码,即 e3500,并输入3030 303132。( 3)g=0000:2000 , 运行以上程序,并用

13、ctrl+c来中断程序,返回监控状态。( 4)用 d3510 查看结果,应为:35100c 00。( 5)反复试几组数,考察程序的正确性。2. 将十进制数的ascii 码转换为bcd 码设从键盘输入的五位十进制数的ascii 码已存放在3500h 起始的内存单元内,把它转换为 bcd码后,再按位分别存入350ah起始的内存单元内。假设输入的不是十进制数的ascii 码,则对应存放结果的单元内容为“ff”。由表 2-1 可知,一字节ascii 码取其低四位即变为 bcd 码。实验程序及流程如下:stack segment stackdw 64 dup(?) stack endscode segm

14、ent assume cs:codestart:mov cx,0005h;循环计数器赋初值mov di,3500h;ascii 码首地址a1:mov bl,0ffh;将错误标志送入bl mov al,di;送 ascii 码至 alcmp al,3ah;比较 al 与 3ahjnb a2;不低于 3ah 则转 a2sub al,30h;低于 3ah 则取 ascii 码低 4 位jb a2;低于 30h 则转 a2mov bl,al;否则 al 内容送入bl ,取代 ffh a2:mov al,bl;结果或错误标志送入almov di+0ah,al inc diloop a1 a3:jmp a

15、3 code endsend start实验步骤(1) 输入程序并检查无误,经汇编,连接后装入系统。(2) 在 3500-3504h 单元中存放五位十进制数的ascii 码,即:e3500 ,并输入 31 32 3334 35。(3)g=0000:2000 , 运行以上程序。(4) 用 d3510 查看结果,显示结果应为: 0000: 350a00 01 02 03 04 05 cc(5) 反复试几组数,考察程序的正确性。四思考题程序 2 将一个五位十进制数转换为二进制数十六位 时,这个十进制数最小可为多少, 最大可为多少?为什么?实验三运算类编程实验一、实验目的1. 掌握使用运算类指令编程及

16、调试方法。2. 掌握运算类指令对各状态标志位的影响及其测试方法。二、实验设备tdn86/51 教学实验系统一台三、实验内容及步骤8086/8088 指令系统提供了实现加、减、乘、除运算的基本指令,可对表3-1 所示的数据类型进行算术运算。数制表 3-1数据类型算术运算表二进制bcd 码带符号无符号组合非组合运算符+ -×+ -+ -×操作数字节、字、多精度字节二位数字字节一位数字1十进制数的bcd 码减法运算计算下 x-y=z ,其中, x 、y 、z 均为 bcd 码。实验程序及流程如下:stack segment stack dw 64 dup(?)stack ends

17、xdw ?;请在此处给x赋值ydw ?;请在此处给x赋值zdw ?data segmentdataends code segmentassume cs:code,ds:data开始标志寄存器清0数据位数 cx被减数及减数首址si结果首址 disi alal-si+2start:mov ax,datamov ds,ax mov ah,00hsahfmov cx,0002h mov si,offset x mov di,offset za1:mov al,si sbb al,si+02hdaspushfand al,0fh popf地址存储器das 调整标志寄存器内容入栈al 高 4 位置 0标志

18、寄存器内容出栈存结果修改 si、dimov di,al350000inc di350104xinc si350202yloop a1350301a2:jmp a2codeends3510zncx=0 ?yend start结束3511实验步骤(1) 输入实验程序并检查无误,经汇编,连接后装入系统。设 cs:0000h , ip: 2000h(2) 用 u0000:2000 查看 movax,xxxx(data) 语句,即得到数据段段地址ds:xxxx 。用 e 命令 exxxx:0000给 x , y 赋值存入 40 和 12 的 bcd 码: 00040201。(3)g=0000:2000

19、, 运行以上程序。(4) dxxxx:0004,显示计算结果:08 02 cc。(5) 反复试几组数,考察程序的正确性。四、思考题编写两个数值长度不等的bcd 码相加的程序。实验四分支程序设计实验一、实验目的1. 掌握分支程序的结构。2. 掌握分支程序的设计、调试方法。二、实验设备tdn86/51 教学实验系统一台三、实验内容及步骤设计一数据块间的搬移程序。设计思想: 程序要求把内存中一数据区称为源数据块数据块。源数据块和目的数据块在存储中可能有三种情况,如图传送到另一存储区4-1 所示。成为目的00000h00000h00000h源目源数据块数据目的数源块的据数目的数据块数据块据块块ffff

20、fhafffffhbfffffh c图 4-1对于两个数据块别离的情况,如图4-1(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重迭的情况,则要加以分析, 否则重叠部分会因“搬移” 而遭破坏,可以得到以下结论:当源数据块首址>目的块首址时,从数据块首地址开始传送数据。当源数据块首址<目的块首址时,从数据块末地址开始传送数据。实验程序及流程如下:stack segment stackdw 64 dup(?) stack endscode segment assume cs:codestart:mov cx,0010h; 取搬家字节数16 个字节mov

21、si,3100h;取源块首址mov di,3200h;取目的块首址cmp si,di;从首址开始?开始si 源数据块首址ja a2;是,转移add si,cx;否,以末地址开始搬家add di,cxdec si dec dia1:mov al,si;从首址开始搬家di目的数据块首址cx搬家字节数<si>di?>实验步骤mov di,al dec si dec di dec cx jne a1 jmp a3a2: mov al,si mov di,al inc siinc di dec cx jne a2a3:jmp a3 code endsend startsi si+cx-

22、1 di di+cx-1di sisi si-1 di di-1cx cx-1ncx=0 ?ydi sisi si+1 di di+1cx cx-1ncx=0 ?y(1) 按实验流程图设计编写实验程序。结束(2) 输入实验程序并检查无误,经汇编,连接后装入系统。设 cs:0000h , ip: 2000h(3) 用 e 命令在以si 为起址的单元中填入16 个数。(4)g=0000:2000 , 运行以上程序。(5) 用 d 命令查看di 为起址的单元中的数据是否与si 单元中数据相同。(6) 试改变 si、di 的取值,观察在三种不同的数据块情况下程序的运行。四、思考题为什么当源数据块首址&

23、gt;目的块首址时,应从数据块首址开始传送数据;而当源数据块首址 <目的块首址时,应从数据块末地址开始传送数据?实验五循环程序设计一、实验目的1. 加深对循环结构的理解。2. 掌握循环结构程序设计的方法。3. 熟练掌握调试循环程序的方法。二、实验设备tdn86/51 教学实验系统一台三、实验内容及步骤开始1 dx2 blbl albl+1 blal*bl axdx+ax dxnax>200 ?y结束1编制程序使s=1+2× 3+3× 4+4× 5+n(n+1) ,直到 n(n+1)项大于 200 为止。实验程序及流程如下:stack segment s

24、tack dw 64 dup(?)stack endscode segment assume cs:codestart:mov dx,0001h mov bl,02ha1:mov al,blinc bl mul bladd dx,ax cmp ax,00c8h jna a1a2: int 03h code endsend start实验步骤(1) 按流程图编制实验程序。(2) 输入实验程序并检查无误,经汇编,连接后装入系统。设 cs:0000h , ip: 2000h(3)g=0000:2000 , 运行以上程序。(4)rax ,显示结果。2求某数据区内复数的个数设数据区的第一单元存放区内单元

25、数据的个数, 从第二单元开始存放数据, 在区内最后一个单元存放结果。 为统计数据区内负数的个数, 需要逐个判断区内的每一个数据, 然后将所有数据中但凡符号位为 1 的数据的个数累加起来,即得区内所包含负数的个数。实验程序及流程如下:开始数据区首址送di数据个数 cxch 、bl 置 0di 增 1数据首位 =1?nybl+1 bldi 增 1ncx=0 ?y存结果结束stack segment stack dw 64 dup(?)stack endscode segment assume cs:codestart:mov di,3000h; 设数据区首址mov cl,di; 送数据个数xor

26、ch,ch;ch 清 0mov bl,ch;bl 清 0inc di; 指针指向第一个数据a1: mov al,ditest al,80h; 数据首位是否为1 je a2inc bl; 负数个数累加a2: inc diloop a1mov di,bl ;存结果int 03h code endsend start实验步骤(1) 按流程图编制实验程序。(2) 输入实验程序并检查无误,经汇编,连接后装入系统。设 cs:0000h , ip: 2000h(3) e3000输入数据如下: 3000 06数据个数3001 12、88、82、90、22、33。g=0000:2000 , 运行以上程序。4d

27、3007,显示结果03。(5)反复试几组数,考察程序的正确性。四思考题修改程序 2,使其能分别求出数据区中正数、零和负数的个数。实验六子程序设计实验一、实验目的1. 学习子程序的定义和调用方法。2. 掌握子程序、子程序的嵌套、递归子程序的结构。3. 掌握子程序的程序设计、编制及调用。二、实验设备tdn86/51 教学实验系统一台三、实验内容及步骤1求无符号字节序列中的最大值和最小值设有一字节序列,其存储首址为3000h ,字节数为08h 。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下:开始数据首址 si序列的字节个数cx调用求最大最小值子程序结束stacksegment

28、 dw 64 dup(?)stack endscode segment assume cs:codestart:mov si,3000h子程序入口ycx=0 ?子程序n主程序mov cx,0008hcall branch int 03hbranch:jcxz a4push si push cx push bx mov bh,si mov bl,bha1:lodsbcmp al,bh jbe a2 mov bh,al jmp a3si、cx 、bx 入栈si al si+1 sinal bhnal bhycx-1 cxal blal bla2:cmp al,bl jae a3 mov bl,al

29、a3:loop a1mov ax,bx pop bxncx=0 ?y返回pop cx pop sia4:ret code endsend start实验步骤(1) 根据流程图编写出相应的程序。(2) 输入实验程序并检查无误,经汇编,连接后装入系统。设 cs:0000h , ip: 2000h(3) e30000,输入8 个字节的数据:d9、07、8b、c5、eb、04、9d、f9。(4)g=0000:2000 , 运行以上程序。(5)rax ,显示结果,ax=f9 04 , ah中为最大值,al 中为最小值。程序说明:该程序使用bh 和 bl 暂存现行的最大值和最小值,开始时初始化成首字节的内

30、容, 然后进入循环操作,从字节序列中逐个取出一个字节的内容与bh 和 bl 比较, 假设取出的字节内容比bh 的内容大或比bl 的内容小, 则修改之。 当循环操作结束时, 将 bh 送 ah ,将 bl 送 al ,作为返回值,并恢复bx 原先内容。四、思考题1. 假设求有符号字节型序列中的最大值和最小值,如何修改程序?2. 子程序执行完毕后要返回程序调用,它返回调用程序的什么地方,是靠什么指令、什么方法返回的?实验七存储器扩展实验一、实验目的1学习掌握存储器扩展方法和存储器读/ 写。2了解 6264ram 特性。二、实验设备tdn86/51 教学实验系统一台三、实验内容及步骤一系统中的存储器

31、扩展单元1. 6264ram介绍静态 ram 是由 mos 管组成的触发器电路,每个触发器可以存放1 位信息。只要不掉电,所存储的信息就不会丧失。因此,静态ram 工作稳定,不需要外加刷新电路,使用方便。但一般sram 的每一个触发器是由6 个晶体管组成,sram 芯片的集成度不会太高,目前较常用的有62162k*8 位, 62648k*8 位,62256 32k*8 位。6264ram有 8192个存储单元,每个单元为8 位字长。 6264 的引脚如图7-1 所示, we 、oe、ce1、ce2 的共a0a12 d0d7 ce1 ce2 weoe地址线双向数据线片选线 1片选线 2写允许线读

32、允许线同作用决定了芯片的运行方式,如表7-1 所示。表 7-16264运行方式wece1ce2oe方式d0d7×h××未选中掉电高阻××l×未选中掉电高阻hlhh输出禁止高阻hlhl读outllhh写inllhl写in2. 系统实验单元中的6264 线路如图7-1 所示图 7-16264 引脚及实验单元中的6264二存储器扩展实验按图 7-2 所示实验线路编写程序,将6264 直接挂至总线进行存储器扩展。图 7-2实验线路实验程序如下:stack segment stack dw 64 dup(?)stack endsdata seg

33、ment table db 0ah dup(?) data endscode segmentassume cs:code,ds:data实验步骤start:mov ax,da ta;程序装入后用u 命令查看此语句可mov ds,ax;知数据段地址,以便于用e 命令修mov cx,000ah;改变量参数mov bx,offset table mov si,0000ha1:mov al,bx push dspush axmov ax,2000h mov ds,ax pop axmov si,al pop ds inc siinc bx loop a1a2:jmp a2code endsend st

34、art(1) 按图 7-2 所示实验线路连接。(2) 输入实验程序并检查无误,经汇编,连接后装入系统。(3) 用 u 命令查看程序第一、 二句找出原数据区段地址xxxx ,用 e 命令在 xxxx :0000xxxx : 0009 中分别放入10 个数。(4) 运行以上程序。(5) 用 d 命令检查2000:00002000 :0009 单元内容是否与原数据区放入的10 个数一致。实验八中断特性及 8259 应用编程实验一、实验目的1. 认识 tdn86/51 系统的中断特性。2. 掌握 8259 中断控制器的工作原理。3. 掌握 8259 可编程中断控制器的应用编程。4. 学习在接口实验单元

35、上构造连接实验电路的方法。二、实验设备tdn86/51 教学实验系统一台排线、导线假设干三、实验内容及步骤一系统中的8259a 芯片1. 系统中的8259a 芯片系统中的8259a芯片工作于单片方式,但可由用户扩展成级连方式。其线路如图8-1图 8-1系统中的8259a 芯片系统启动时, 8259a 被初始化, 其初始化是通过系统中的初始化程序设置初始化命令字icw来实现的。系统初始化时,规定irq0 和 irq4 中断源分别提供应实时时钟和与pc 微机联机的串口通讯,用户可以使用其余的中断源。在进入监控后,只有态,其他中断源被屏蔽了。中断矢量地址与中断号之间的关系如下表。irq4 中断源处于

36、开启状所示。图中的圈点表示此为排针形式引出脚。注:以下线路图中的圈点均为排针形式引出脚以后不再另作说明。 中断序号01234567功能调用08h09h0ah0bh0ch0dh0eh0fh20h24h28h2ch30h34h38h3ch矢量地址|23h27h2bh2fh33h37h3bh3fh说明实时时钟可用可用可用串口 1可用可用可用2. 接口实验单元中的级联实验用8259a 芯片除系统中的8259a 芯片外,在接口实验单元中专门提供了另一片8259a 芯片,以便进行 8259 连接实验。其线路如图8 2 所示。3. 接口实验单元中的r-s 触发器电路,如图8-3 所示。二实验内容1. 825

37、9 应用实验 1按图 8-4 所示实验线路编写程序,使每次响应外部中断irq7 时,显示字符“7”,中断10次后,程序退出。实验程序及流程如下:图 8-2接口实验单元中的级联用8259a 芯片线路图 8-3r-s 触发器电路图 8-4实验 1线路stack segment dw 64 dup(?)stack ends code segmentassume cs:codestart:push ds mov ax,0000h mov ds,axmov ax,offset irq7 add ax,2000hmov si,003ch mov si,ax mov ax,0000h mov si,003e

38、h mov si,ax clipop ds;保存数据段;数据段清零;取中断程序入口地址相对地址;加装载时ip=2000h 地址绝对地址;填 8259 中断 7 中断矢量;填偏移量矢量;段地址 cs=0000h;填段地址矢量;关中断;弹栈irq7 中断服务处理中断入口显示“ 7”cx=cx-1关中断返回in al,21h and al,7fh out 21h,almov cx,000ah a1:cmp cx,0000hjnz a2in al,21h or al,80h out 21h,al stihlta2:sti jmp a1irq7:mov ax,0137h int 10hmov ax,01

39、20h int 10hdec cxmov al,20h out 20h,al cliiret code endsend start实验步骤;读 8259 中断屏蔽字;开 8259 中断 7; 读 8259 中断屏蔽字;开 8259 中断 7;中断程序入口主程序开始修改 irq7中断矢量修正 imr, 使irq7 中断允许cx=000ahycx=0?n开中断屏蔽 irq7开中断停机(1) 按图 8-4 连接实验线路。(2) 输入实验程序并检查无误,经汇编,连接后装入系统。设 cs:0000h , ip: 2000h(3) g=0000:2000 , 运行以上程序。 注意:程序中8259 中断矢量

40、地址为绝对地址,已定义为段地址cs=0000h,偏移量地址ip=2000h,故装载时一定按此填入cs 和 ip地址,后面实验不再重述。(4) 重复按 kk2 微动开关,显示屏上应用“7”来响应,直到按10 次后,系统处于停机状态,用 ctrl+c返回监控。2. 8259 应用实验 2图 8-5实验 2线路按图 8-5 所示实验线路,编写程序,完成下面的要求:当无中断请求时,执行主程序,延时显示“main ”,假设有中断请求,则执行其中断服务程序,显示该中断号“6”或“ 7”;假设正在执行较低级的中断服务程序,则允许比它优先级高的中断被响应irq6>irq7 。主程序在执行过程中,每显示一

41、个“main”,空一格。实验程序如下:stacksegmentstack dw 64 dup(?)stackends da tasegmenttabledb4dh,41h,49h,4eh,20h,00h da taendscode segmentassume cs:code,ds:data start: movax,da tamovds,axpushdsmovax,0000hmovds,axmovax,offset irq6 addax,2000hmovsi,0038hmovsi,axmovax,0000hmovsi,003ahmovsi,axmovax,offset irq7 addax,2

42、000hmovsi,003chmovsi,axmovax,0000h;定义堆栈段;定义数据段;定义代码段;主程序开始;填数据段地址;保存数据段;数据段清零;取中断程序入口地址相对地址;加装载时ip=2000h 地址绝对地址;填 8259 中断 6 中断矢量;填中断 6 偏移量矢量;段地址 cs=0000h;填中断 6 段地址矢量;取中断程序入口地址相对地址;加装载时ip=2000h 地址绝对地址;填 8259 中断 7 中断矢量;填中断 7 偏移量矢量;段地址 cs=0000hmovsi,003ehmovsi,axpopdsmoval,13hout20h,almoval,08hout21h,a

43、lmoval,09hout21h,almoval,3dhout21h,al stia1:movcx,0007hmovax,010dhint10ha2:movah,06hmovbx,offset table int10hcalldall yloopa2jmpa1irq6:sticalldall ymovax,0136hint10hmoval,20hout20h,al iretirq7:sticalldall ymovax,0137hint10h moval,20hout20h,al iretdall y:pushcxpushaxmovcx,0040ha3:movax,056cha4:decaxj

44、nea4loopa3popaxpopcx;填中断 7 段地址矢量;弹栈;回车换行;取数据段中ascii 码存放地址;调字符串显示“main ”;调延时子程序;到 7 次换行;8259 中断 6 程序入口;显示“ 6”;显示空格;中断返回;8259 中断 7 程序入口;显示“ 7”;显示空格;中断返回;延时子程序入口retcodeends end start;子程序入口;程序结束实验步骤1画出以上程序流程图。2按图 8-5 连接实验电路。3输入程序并检查无误,经汇编,连接后装入系统。4g=0000:2000 ,运行实验程序,则连续显示“main”,先后按动kk1 和 kk2 微动开关来模拟中断请

45、求信号,记录请求顺序及显示结果。3. 8259 级联实验本程序旨在掌握8259 级联方案的硬件连接及编程。本实验是以系统中的8259 作为主片,外接另一8259 作为从片,构成8259 级联方式的中断实验线路,如图8-6 所示。其中规定主片的irq7 上连接一片从片,从片上的irq7 接外中断申请电路r-s 单脉冲触发器 ,并规定从片的中断矢量编号为30h37h ,其命令寄存器组编址为00 和 01 。图实验程序如下:8-68259 级联实验接线图stacksegmentstackout01h,aldw 64 dup(?)pushdsstackendsmovax,0000hcodesegmentmovds,axassumecs:codemovax,offset irq7start:cliaddax,2000hmoval,11hmovsi,00dchout20h,almovsi,axmoval,08hmovax,0000hout21h,almovsi,00dehmoval,80hmovsi,axout21h,alpopdsmoval,1dha1:stiout21h,alhltmoval,7dhjmpa1out21h,alirq7: movax,0137hmoval,11hint10hout00h,almovax

温馨提示

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

评论

0/150

提交评论