关于汇编指令xlat代码问题,哪位大虾帮忙看看,看了好多天就是不理解先谢谢啦
程序实现功能:循环不断从8255的c口输入二进制0~fH,换码后从a口输出,如果键盘上有按键就退出循环返回到dos程序代码:
方式字=10001001B
A、B、C、控制口地址为0E488H、0E489H0E48AH、0E48BH
DATA SEGMENT
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,67H,77H,7CH,39H,5EH,79H,71H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,89H,
MOV DX,0e48BH,
OUT DX,AL
INOUT:MOV DX,0E48AH
IN AL,DX
AND AL,OFH ;经过and后AL的值是多少?
MOV BX,OFFSET DATA
XLAT
MOV DX,OE488H
OUT DX,AL
MOV AH,1
INT 16H
JZ INOUT
MOV AH,4CH
INT 21H
CODE ENDS
ENDSTART
我想问第一次执行AND AL,OFH 时,AL=?,我是按al=3fh计算的,第一次xlat后,al=bx+(al and ofh),al=71h,第二次xlat后,al= bx+(71h and 0fh),al=06h,第三次xlat后,al= bx+(06h and 0fh),al=7dh,第四次xlat后,al= bx+(7dh and 0fh),al=5eh,第五次xlat后,al= bx+(5eh and 0fh),al=79h,第六次xlat后,al= bx+(79h and 0fh),al=67h,第七次xlat后,al= bx+(67h and 0fh),al=07h,第八次xlat后,al= bx+(07h and 0fh),al=07h,第九次第十次。。。。,以后都是07h了,死循环了吗?我这样计算对吗?哪位高手帮忙看看
顺便可否帮忙告诉下怎么根据电路图计算8255的四个端口地址啊?
谢谢啦