请问汇编语言视频教程中的AX,BX,CX,DX是什么东东?

随笔 - 895&
评论 - 137&
&&&&&&&&&&&
一般寄存器:AX、BX、CX、DXAX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器索引暂存器:SI、DISI:来源索引暂存器,DI:目的索引暂存器堆叠、基底暂存器:SP、BPSP:堆叠指标暂存器,BP:基底指标暂存器EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有&专长&,有各自的特别之处。EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。EDX 则总是被用来放整数除法产生的余数。ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:    保存当前ebp  mov ebp,EBP设为当前堆栈指针  sub esp,预留xxx字节给函数临时变量.  ...    这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。386部分寄存器:状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。这几个寄存器中保存全局性和任务无关的机器状态。CR0中包含了6个预定义标志,0位是保护允许位PE(Protedted Enable),用于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运行。1位是监控协处理位MP(Moniter coprocessor),它与第3位一起决定:当TS=1时操作码WAIT是否产生一个&协处理器不能使用&的出错信号。第3位是任务转换位(Task Switch),当一个任务转换完成之后,自动将它置1。随着TS=1,就不能使用协处理器。CR0的第2位是模拟协处理器位 EM (Emulate coprocessor),如果EM=1,则不能使用协处理器,如果EM=0,则允许使用协处理器。第4位是微处理器的扩展类型位ET(Processor Extension Type),其内保存着处理器扩展类型的信息,如果ET=0,则标识系统使用的是287协处理器,如果 ET=1,则表示系统使用的是387浮点协处理器。CR0的第31位是分页允许位(Paging Enable),它表示芯片上的分页部件是否允许工作。CR1是未定义的控制寄存器,供将来的处理器使用。CR2是页故障线性地址寄存器,保存最后一次出现页故障的全32位线性地址。CR3是页目录基址寄存器,保存页目录表的物理地址,页目录表总是放在以4K字节为单位的存储器边界上,因此,它的地址的低12位总为0,不起作用,即使写上内容,也不会被理会。这几个寄存器是与分页机制密切相关的,因此,在进程管理及虚拟内存管理中会涉及到这几个寄存器,读者要记住CR0、CR2及CR3这三个寄存器的内容。esp:寄存器存放当前线程的栈顶指针ebp:寄存器存放当前线程的栈底指针
eip:寄存器存放下一个CPU指令存放的内存地址,当CPU执行完当前的指令后,从EIP寄存器中读取下一条指令的内存地址,然后继续执行。
阅读(...) 评论()您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
IBM-PC汇编语言程序设计答案(第2版)资料.doc145页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:100 &&
你可能关注的文档:
··········
··········
附录:《IBM?PC汇编语言程序设计》习题参考答案
用降幂法和除法将下列十进制数转换为二进制数和十六进制数:
1 1111BFFFH
将下列二进制数转换为十六进制数和十进制数:
1 10 0 1 11 4
11 1111BFFFFH65535
将下列十六进制数转换为二进制数和十进制数:
1 FA2 5B3 FFFE4 1234
5BH101 1011B91
完成下列十六进制数的运算,并转换为十进制数进行校核:
1 3A+B7 2 1234+AF 3 ABCD-FE 4 7AB×6F
3A+B7HF1H241
1234+AFH12E3H4835
ABCD-FEHAACFH43727
下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
1 -85+76 2 85+-76 3 85-76 4 85--76 5 -85-76 6 -85--76
答:1 -85+1B+11 H;CF0;OF0
2 85+-1B+00 1001B09H;CF1;OF0
3 85-1B-01
01B09H;CF0;OF0
4 85--1B-01
1B0A1H;CF0;OF1
5 -85-1B-10
11B5FH;CF0;OF1
6 -85--1B-10
1B0F7H;CF0;OF0
下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?
D8H表示的带符号数为 -40,D8H表示的无符号数为216;
FFH表示的带符号数为 -1, FFH表示的无符号数为255。
下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么?
1 4F2 2B3 73
正在加载中,请稍后...只需一步,快速开始
后使用快捷导航没有帐号?
查看: 1442|回复: 7
难道只能 [BX]可以当做偏移地址吗??[AX][CX][DX]可以吗?
累计签到:82 天连续签到:1 天&
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
难道只能 [BX]可以当做偏移地址吗??[AX][CX][DX]可以吗? [段寄存器]这个可以吗??&&
求详解。。。。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:32 天连续签到:1 天&
当然是BX了& &就像CX只能当循环次数一样
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:82 天连续签到:1 天&
当然是BX了& &就像CX只能当循环次数一样
段地址都是人为规定的啊,我用[ax] 当个偏移地址,怎么就不可以啊?会出什么问题啊 ?
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:10 天连续签到:1 天&
偏移地址有bi si bx db&&这4个& & 段地址ds cs ss& &es& &&&当然 他们是有一区别的&&你可以先把教程看完&&再了解& &啦你以前的疑问基本就没有了
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:10 天连续签到:1 天&
[]里不可以有ax&&只能bx si di db
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:82 天连续签到:1 天&
[]里不可以有ax&&只能bx si di db
好吧,我先教程,看完了我回头再讨论这个问题。。。谢过了
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:32 天连续签到:1 天&
段地址都是人为规定的啊,我用[ax] 当个偏移地址,怎么就不可以啊?会出什么问题啊 ?
你可以试一下&&编一个小程序&&然后debug一下&&看看到底cpu认识不认识其他的寄存器做偏移地址&&这样学习更快
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
累计签到:464 天连续签到:1 天&
都可以的,上面的朋友太古板,什么顺手用什么的,灵活运用。一般AX,CX,BX,DX,DI,SI,都可以,如果中间有可能别的代码会改变寄存器的值,注意保存还原就可以了。。熟能生巧,迟早熟练的只要肯下功夫。个人建议16位的就不必太纠结了,尽快完成过渡。。。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的
按钮,否则您的代码可能会被“吃掉”!
•••(
Powered by

我要回帖

更多关于 汇编语言 王爽 的文章

 

随机推荐