微机原理高手求救 debug中的几个问题?

1.在debug中为什么不允许段超越,如mov ax,cs:[1000],回车时提示错误?有什么办法能在debug使用段超越?
2.为什么"立即数不能直接传给段寄存器;两个段寄存器之间不能传递数据."如:mov ds,1234h;mov ds,cs;"是错误的.是不是intel工程师在设计cpu时就不允许这样用啊?
3.双操作数指令是不是一定要至少有一个操作数使用寄存器寻址? 有没有特殊情况?
4.在debug中输入指令:mov cs,ax(回车),并没有提示错误,但书上说明了cs不能用于目的操作数,这是怎么回事?(本人执行这条指令时,debug有出现了问题:无效指令,要求终止指令)无效指令是不是指在cpu系统指令中不存在这种指令操作?但为什么指令的语法又是正确的啊?
5.xlat 操作数嘛?如果有可以是哪些?

6.biso,操作系统,显卡指令在内存的哪一段?电脑开机时(电源刚接通时那一刻)从那条指令开始运行?

第1个回答  2008-11-01
1.DEBUG只支持基本的汇编命令用法,就连标识符也不支持,如MOV AX,0可以而MOV AX,FLAGS就不行,这是汇编环境的问题.
解决的办法是将段超越写在前面,如上面的指令可写为:
CS:
MOV AX,[1000]两者作用等效
2.是的,详INTEL指令手册之类.关于MOV 可以为

1、立即数送寄存器
2、立即数送存储器

3、寄存器送存储器
4、寄存器送段寄存器

5、段寄存器送寄存器
6、段寄存器送存储器

7、存储器送寄存器
8、存储器送段寄存器

3.参考前面的资料,可知你的是错误的,如MOV 段寄存器,存储器 MOV 存储器,立即数
4.用法错误没能检查出来,是DEBUG的问题,也许它的设计者就没想到有人会这样用吧.
5. 查表指令 XLAT
指令格式:XLAT TABLE 其中TABLE为一待查表格的首地址。
指令功能:把待查表格的一个字节内容送到AL累加器中。在执行该指令前,应将TABLE先送至BX寄存器中,然后将待查节节与在表格中距表首地址位移量送AL,即(AL)<--((BX)+(AL)).
本指令不影响状态标位,表格长度不超过256字节。

6.电脑开机时从FFFF:0开始运行BIOS引导指令,BIOS引导后加载操作系统,显卡段地址B800本回答被提问者采纳