汇编程序计算机组成原理实验及答案Word文档下载推荐.docx
《汇编程序计算机组成原理实验及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编程序计算机组成原理实验及答案Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
movcx,0
ll:
loopll
decbx
jnelll
ret
delayendp
codeends
endstart
实验二简单并行接口
掌握简单并行接口的工作原理及使用方法。
二、实验内容
1、按下面图2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
2、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
三、编程提示
1、上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3条指令:
MOVAL,数据
MOVDX,2A8H
OUTDX,AL
通过上述并行接口输入数据需要2条指令:
MOVDX,2ADH
INAL,DX
********************************;
*简单并行输入实验*;
ls244equ2a0h
movdx,ls244;
从2A0输入一数据
inal,dx
movdl,al;
将所读数据保存在DL中
movah,02
movdl,0dh;
显示回车符
movdl,0ah;
显示换行符
movah,06;
是否有键按下
movdl,0ffh
jnzexit
jestart;
若无,则转start
exit:
movah,4ch;
返回
1、按下面图2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
****************************;
*简单的并行输出实验*;
ls273equ2a8h
movah,2;
回车符
movdl,0dh
movah,1;
等待键盘输入
cmpal,27;
判断是否为ESC键
jeexit;
若是则退出
movdx,ls273;
若不是,从2A8H输出其ASCII码
jmpstart;
转start
实验三可编程定时器/计数器(8253
掌握8253的基本工作原理和编程方法。
1、按图3-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平。
1、8253控制寄存器地址283H
计数器0地址280H
计数器1地址281H
CLK0连接时钟1MHZ
*************************;
*8253方式0计数器实验*;
io8253aequ283h
io8253bequ280h
moval,14h;
设置8253通道0为工作方式2,二进制计数
movdx,io8253a
movdx,io8253b;
送计数初值为0FH
moval,0fh
inal,dx;
读计数初值
calldisp;
调显示子程序
pushdx
movah,06h
popdx
jzlll
movah,4ch;
退出
dispprocnear;
显示子程序
andal,0fh;
首先取低四位
movdl,al
cmpdl,9;
判断是否<
=9
jlenum;
若是则为'
0'
-'
9'
ASCII码加30H
adddl,7;
否则为'
A'
F'
ASCII码加37H
num:
adddl,30h
movah,02h;
显示
加回车符
加换行符
ret;
子程序返回
dispendp
1、按图3-2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ。
*******************
*8253分频*
io8253aequ280h
io8253bequ281h
io8253cequ283h
movdx,io8253c;
向8253写控制字
moval,36h;
使0通道为工作方式3
movax,1000;
写入循环计数初值1000
outdx,al;
先写入低字节
moval,ah
后写入高字节
movdx,io8253c
moval,76h;
设8253通道1工作方式2
movdx,io8253b
先写低字节
后写高字节
程序退出
掌握8253的基本工作原理和编程方法,用示波器观察不同方式下的波形。
1、按图3-3连接电路,将计数器0设置为方式3(方波,计数器设置为方式2(分频。
2、实现计数器0的输出为方波,计数器1的输出是计数器0输出的分频波形。
3、人机交互界面设计:
实现在显示屏幕上提示输入计数器0(方波的参数和计数器1(分频信号的参数。
如下所示:
counter0:
____
counter1:
continue?
(y/n____
4、实现用键盘直接输入修改程序中方波的参数和分频信号的参数,以改变方波的宽度,分频信号的周期和分频数,不需重新修改源代码。
5、用示波器观察计数器0和计数器1的输出波形及其关系,并在纸上画出CLK0、OUT0、OUT1的波形。
*8253program*;
datasegment
mesg0db13,10,'
*******************************8253progam
*******************************'
13,10,'
$'
mesg1db13,10,'
'
'
mesg2db13,10,'
mesg3db13,10,'
(y/n'
mesg4db13,10,13,10,'
ThankYou!
errormdb13,10,'
InputError!
counter0dw0
counter1dw0
dataends
code,ds:
data
mainprocfar
movdx,segdata
movds,dx
movdx,offsetmesg0
movah,09h
do:
subbx,bx
subax,ax
movcounter0,0
movcounter1,0;
init
l1:
movdx,offsetmesg1
rd1:
;
readcounter0
movah,01;
readachar
cmpal,13;
ifenter
jefdone1
jmptdone1
fdone1:
jmpdone1
tdone1:
cmpal,10
cmpal,'
ifinput<
0orinput>
9errorjberror
jaerror
pushax
movax,10
mulcounter0
movcounter0,ax;
counter0=counter0*10
popax
subbx,bx
movbl,al
subbl,30h
addcounter0,bx;
counter0=counter0+inputjmprd1
error:
movdx,offseterrorm
movdl,7
movah,2
jmpdone3
tr:
forjmpdo
movah,02h
movdl,10
movdl,13
jmpdo
l2:
movdx,offsetmesg2
rd2:
readcounter1movah,01
jefdone2
cmpal,10
jmptdone2
fdone2:
jmpdone2
tdone2:
jberror
mulcounter1
movcounter1,ax;
counter1=counter1*10
subbl,30h;
bh=0
addcounter1,bx;
counter1=counter1+inputjmprd2
done1:
jmpl2
done2:
jmpout8253;
afterentertwocounters;
set8253anddoitdone3:
movdx,offsetmesg3
l3:
movah,07h
Y'
jetr
y'
N'
jequit
n'
jmpl3
out8253:
workcode
moval,00110110b
movdx,283h
movax,counter0
movdx,280h
moval,01110100b
movax,counter1
movdx,281h
movcx,2801
delay:
loopdelay
quit:
returntoDOS
movdx,offsetmesg4
movah,9
movax,4c00h
mainendp
实验四可编程并行接口(一(8255方式0
掌握8255方式0的工作原理及使用方法。
1、实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2、编程从8255C口输入数据,再从A口输出。
1、8255控制寄存器端口地址28BH
A口的地址288H
C口的地址28AH
*8255方式0的C口输入,A口输出*;
io8255aequ288h
io8255bequ28bh
io8255cequ28ah
movdx,io8255b;
设8255为C口输入,A口输出
moval,8bh
inout:
movdx,io8255c;
从C口输入一数据
movdx,io8255a;
从A口输出刚才自C口
所输入的数据
movdl,0ffh;
判断是否有按键
jzinout;
若无,则继续自C口输入,A口输出
否则返回
实验四可编程并行接口(二(8255方式0
1、通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。
2、掌握8255三个数据端口与被测IC芯片的硬件连接方法。
3、通过实验掌握用8255并行口模拟集成电路测试仪,对集成电路进行逻辑测试的方法。
1、按图4-2连接硬件电路,以测试3-8译码器74LS138为例。
2、人机交互界面设计:
按照集成电路74LS138芯片的引脚图显示在屏幕上,如下所示:
+------------------------------+
|Y0Y1Y2Y3Y4Y5Y6Y7|
||
|74LS138|
|ABCG1G2A+G2B|
TestAgain?
(Y/N
8255控制寄存器端口地址28BH
chipdb13,10
db13,10
db'
Programtotestthechipof74LS138'
13,10
+------------------------------+'
|Y0Y1Y2Y3Y4Y5Y6Y7|'
||'
|74LS138|'
13,10db'
|ABCG1G2A+G2B|'
messdb'
Afteryouhaveready,Pleasepressanykey!
mes2db'
(Y/N'
InAdb0
OutCdb0
clldb'
'
********************************************
movax,data
movds,ax
again:
callcls
callInputB
OutputCTRLcode(writeto28Bh
movdx,28bh
moval,10001011b
OutputInto288h
movdx,288h
moval,InA
callOutputC
jmp1:
movah,2
movdh,15
movdl,20
int10h
movah,09
leadx,mes2
jeagain
jeexit
movdl,0
leadx,cll
jmpjmp1
movah,4ch
********************************************InputBprocnear
movbh,0
movdx,0
leadx,chip
leadx,mess
movah,0ch
moval,08h
wait1:
movah,0Bh
cmpal,0
jnewait1
movdh,12
movdl,18
jmp3:
pushdx
jmp4:
movah,7
1'
jnejmp2
xchgal,dl
movcl,1