3个问题~都是菜鸟级的!分数在另一个帖子里!求各位 帮忙解答一下!谢你们了

1423567 2005-06-17 11:55:09
可能我那个帖子问的不清楚 我重新整理一下我的思路 问一下大家 谢谢解答!
第一个问题:
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
...全文
63 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2005-06-17
  • 打赏
  • 举报
回复
端口的地址空间, 是在相对于 cpu 的外设上, 通过系统总线和 cpu 交流的. 不同的地址区间被分配给了不同的外设, 有些是规定的, 有些是可以调整的. 其中, 下面是通常的些 i/o 端口的地址分配情况. 有不少是可以调整的, 这个, 从 Windows 的 "设备管理器" 的 "属性"."资源" 页里也可以看得出来.

起止地址 分配情况
000h - 00Fh 8237 DMA控制器1
020h - 021h 8259 主中断控制器
040h - 043h 8253 可编程定时器
060h - 06Fh 8042 键盘控制器
070h - 07Fh RTC,不可屏蔽中断NMI寄存器
080h - 09Fh DMA页暂存器
0A0h - 0B1h 8259 从中断控制器
0C0h - 0DFh 8237 DMA控制器2
0F0h - 0F1h 数学协处理器
0F8h - 0FFh 数学协处理器
1F0h - 1F8h 硬盘控制器1
278h - 27Fh 并口3
2E8h - 2EFh 串口4
2F8h - 2FFh 串口2
378h - 37Fh 并口2
3B0h - 3BBh MDA 适配器
3BCh - 3BFh 并口1
3C0h - 3CFh VGA/EGA适配器
3D0h - 3DFh CGA适配器
3E8h - 3EFh 串口3
3F0h - 3F7h 软驱控制器
3F8h - 3FFh 串口1

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧