3个问题~都是菜鸟级的!分数在另一个帖子里!求各位 帮忙解答一下!谢你们了
可能我那个帖子问的不清楚 我重新整理一下我的思路 问一下大家 谢谢解答!
第一个问题:
IN AX,26H (这里端口号26H是小于255的书上说他是长格式 )
这条指令的源操作数是立即寻址吧 程序执行的时候 26H紧跟着指令一起存放
在代码段内 它意思是从26H这个端口传一个字的内容进AX里 这没错吧?
它的工作原理是不是和内存那种机制一样呢?先从26H读一个字节到AL
然后从27H读一个字节到AH呢? (内存的机制不就是高地址存高字节嘛)
第二个问题:
IN AX,2FAH (这里的端口号2FAH大于了255书上说必须使用短格式)
这指令为什么是错的?
程序执行后把2FAH存入到代码段放在指令后面存放就得拉
然后直接到 2FAH 取一个字到AX嘛!为什么会错?难道和机器硬件设计有关系?
按书上意思说必须改成:
MOV DX,2FAH
IN AX,DX
它的意思我也是明白!是不是这样先把 2FAH 立即数传到DX里
然后 IN 指令执行按DX里的内容当做一个端口地址 然后就从 2FAH中读
一个字节到AL先 再从2FBH读一个字节到AH里
我这样理解对吗?还有这里为什么一定要用DX换成其他的寄存器可以吗?
第三个问题:我感觉这个问题就重要可能解决这个问题 我上面的问题
就全部解决了。我想问的是 这些端口地址
存在哪?内存里?(书上说以前机子都是把端口地址放在内存里一起管理的
但是占用内存资源。后来又改了说什么在80X86微机里 I/0端口地址是一个
连续独立的空间地址,范围0000H-FFFFH 共64K) 这个所谓独立的空间地址
到底是哪?硬件的什么部位?还有他的地址是64K根据什么定的?
分数在这里帖子里 回答的朋友进去也复制一份 这样我好给分!
http://community.csdn.net/Expert/TopicView1.asp?id=4088048