关于汇编语言的操作码

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:09:00
1,关于CBW的功能,书本中说CBW功能是把AL中的符号位扩展到AH,如果AL的最高位为0,则AH=00H;
如果AL的最高位为1,则AH=FFH,但为什么我的电脑中当AX=121AH时,执行CBW命令,后得到的AX=001AH呢?如果这和电脑器件的不同有关
那么我要如何去得知他们的不同之处呢?
为什么我的电脑执行指令的是CS:IP
2,为什么我的电脑执行指令的是CS:IP,而在我们学校的机房的电脑执行指令确是DS:IP
6,关于段超越问题,为什么输入MOV AX,DS:[BP] 时 程序会报错呢?它报错的位置是那个冒号“:”
7,如何在汇编语言程序的屏幕上显示标志寄存器中标志位的值?
8,在DEBUG中,为什么在显示寄数如AX,BX等的值时,后面跟的NV UP EI PL NZ NA PE NC 是什么分别是指什么用的?
10,汇编语言是怎么样把程序给导出来并做为用途去运用的?
11,怎么去查看堆栈里的数据,
12,为什么有的指令占用的是4位,有的八位,2位呢,怎么去区别他们呢?

找几个自己会的试试
2:电脑执行的指令永远是cs:ip指向的位置,至于你说的ds:ip,我觉得应该是ds=ip?
你可以做个实验
-rds 然后改变ds的值使其不等于cs 再看看,应该就能看出区别了 。
11:堆栈数据其实还是内存数据
用d命令
比如
-d1000:0
12:可以看使用的寄存器啊
比如ax,ah,al

1.AX=121AH时,AL=1A(0001 1010) 扩展后为ax=001A是正确的和机子没关系
2.电脑执行的指令永远是cs:ip指向的位置
3.MOV AX,DS:[BP]指令本身没有错误,但注意,;中文和英文格式的区别 如MOV AX,DS:[BP]与上边符号有区别
4.在DEBUG可以看,就像你说的后边跟的NV(溢出0) UP(方向0) EI(允许中断1) PL(符号0) NZ(为零0) NA(辅助进位0) PE(奇偶1) NC(进位0) 都是标志位的符号
5.导出函数举个例子可以供c、c++调用
6.esp指向堆栈顶端的值可以利用它的值来看堆栈
7.要知道最后一个问题你要研究反汇编的机器码了