会的追加200财富值。8255A编程实现CPU每从C口获得一个数据,当该数据中的第2,4,5位同时

会的追加200财富值。8255A编程实现CPU每从C口获得一个数据,当该数据中的第2,4,5位同时为1时,则将以DAT为首地址的5个存储单元的数据从A口输出一个,否则等待,直至5个数据依次输出完毕为止。

第1个回答  2014-11-23
;;假设8255端口A、 B、 C、方式控制口,地址为按顺序排列是:
;;0306H、0307H、0308H、0309H,
;;A口方式0输出、C口方式0输入的方式控制字为:10001001B,

Title 微机用8255A并行口I/O实验
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
TABLE DB 12H,24H,35H,46H,57H
ORG 100H
START: MOV AL, 10001001B ;;方式控制字
MOV DX, 0309H ;;方式控制口地址
OUT DX, AL ;;方式控制口←方式控制字
MOV BX, 5 ;;待送出的数据个数
CLD ;;数据表正向递增标志
LEA SI, [TABLE] ;;数据表指针初值
INPUTC: MOV DX, 0308H ;;C口地址
LP1: IN AL, DX ;;从C口读入一个数据
AND AL, 00110100B ;;屏蔽读入数据的0、1、3、6、7位
CMP AL, 00110100B ;;比较读入数据的2、4、5位是否全为1
JNZ LP1 ;;若读入数据的2、4、5位非全为1,继续读入
OUTA: MOV DX, 0306H ;;若读入数据的2、4、5位全为1,准备A口输出数据
LODSB ;;AL←SI指针所指数据表中的一个数据
OUT DX, AL ;;[AL]→8255的A口
CALL DELAY ;;延时,等待外设接收数据
DEC BX ;;数据表待输出的数据个数减1
JNZ INPUTC ;;若待输出数据个数未为0,循环、继续读入C口
FINISH: MOV AH,4CH ;;若待输出数据个数为0,返DOS
INT 21H

DELAY PROC NEAR ;;延时子程序定义
MOV DX, 2000H
LP2: MOV CX, 0FFFFH
LP3: LOOP LP3
DEC DX
JNZ LP2
RET ;;延时子程序返回
DELAY ENDP

CODE ENDS
END START追问

这个程序段的功能是啥

追答

请采纳我解答的原题目内容,
然后再回答你追加的新问题。

追问

请教您几个问题:1.汇编中有了CLD是不是就不用再写INC了,后面再写了就不对了?
2.所有可编程芯片在使用时都要进行初始化吗?
3.任何接口中都必须要有数据端口吗?我认为是,因为状态信息和控制信息都是通过数据线传输的,这么理解对吗?

追答

答第1个追问:
CLD 设定正向增量之后,
执行LODSB, 将指针SI所指的字节数据读入AL,
SI 自动加1,指向下一个字节。若编程中再有指令 INC SI 反而错了。

答第2个追问:
据我所知,大多数可编程外围芯片使用都须作初始化;

答第3个追问:
有的接口芯片无数据端口,
例如74LS138译码器芯片,仅有使能输入、地址输入及译码片选输出。

追问

第三问我问的是接口,不是芯片,应该是计算机的接口吧,第二问和第三问是判断题,第二问我怀疑有个所有,是不是有的可编程接口芯片不用初始化,比如74ls168,那它还能叫做可编程接口芯片吗?这样扣字眼的题真费解!!

追答

答第3个的后续追问:
例如 8255A,是并行I/O接口,本身就是芯片。

追问

确定下,第二个正确,第三个错误?

追答

你若是为做作业或应付考试,建议你参阅:
《微机接口答案》
http://wenku.baidu.com/link?url=m1ICCvyfnicX9c_SnFCXx1hc4mCuKz6YqcnEZi7_TUpLdr6a5x1H5l4GcZ469SWf6t06NsbP5KkbpLF3tIfKXQIJHKGVJgzvLLm1qt81Z7_

追问

不是的,想搞明白出题人的意思。

大神,帮忙呀。8259A的这几行程序执行什么功能?设8259A的地址为0A0H和0A1H.
MOV AL,0AH
OUT 0A0H,AL
NOP
IN AL,0A0H

追答

MOV AL, OAH ;8259初始化字0AH送入AL
OUT 0AOH,AL ;初始化字输出到8259A的ICW1寄存器
NOP ;空操作
IN AL, 0A0H ;将8259A的ICW1寄存器状态读入AL

追问

这段程序的整体功能是啥,实现一个什么功能?

追答

这段程序主要功能是:对8259初始化

追问

谢谢

不对呀,OUT 0A0H,AL书上说的是写从片的OCW2

追答

不同的硬件电路, 8259的ICW1~ICW4寄存器地址不尽相同。
我未见不到你的书。

追问

ICW1和OCW这些控制命令字不都是固定格式的嘛,比如令ICW1的D4位为1就启动了初始化编程。

这里乱七八糟的学了好几个月学不懂,不像8254和8255那么简单,哎

本回答被提问者采纳
第2个回答  2014-11-11
表示没试过。你输进去试过没?追问

没有,这是编程题,没编程怎么试

相似回答