一个汇编的问题
提问者:jx二十六 | 浏览 次 | 提问时间:2017-03-13 | 回答数量:5
不能用立即数传送给 SS 段寄存器,需用通用寄存器转一下mov ax,6180hmov ss,ax
已有5条答案
不懂汇编...
对内存了解的也不是很多...
楼上的应该是对的吧.. [s:470]
_谋情_害命_
回答数:109 | 被采纳数:141
2017-03-13 19:05:22
作业已经交上,让老师的红笔来证明对错吧,谢谢楼主的帮忙
1) mov ecx, 100<---------100传入ecx
(2) mov eax, 200<---------200传入eax
(3) push eax <------------eax先进了
(4) push ecx<-------------再来是ecx
(5) pop ebx<--------------从栈顶取出一个,也是最后进去的那一个,结果存到ebx
(6) pop ecx<--------------从栈顶取出一个,也就是刚刚先进去的那个了,结果存到ecx
你那直接传送是不行的
下面是我举的例子
本人不才 初中毕业
要是你看不懂也没办法 [s:460]
1,EAX在乘法和除法指令中被自动使用。通常称之为扩展累加寄存器。
2,CPU自动使用ECX作为循环计数器。
3,ESP寻址堆栈(一种系统内存结构)上的数据,ESP寄存器一般绝不应该用于算术运算和数据传送,通常称之为扩展堆栈指针寄存器。
4,ESI和EDI通常用于内存数据的高速传送,通常称之为扩展源指针和目的指针寄存器。
5,EBP由高级语言来引用函数参数和局部变量。除非用于高级语言设计技巧中,EBP一般不用于算术运算和数据传送中,通常称之为扩展帧指针寄存器。
16位段寄存器:
CS, SS, DS, ES, FS, GS.
段寄存器被用于存放段的基址,段是一块预分配的内存区域。有些段存放着程序的指令(代码),有些则存放着变量(数据),另外还有其他的段如堆栈段存放着函数变量和函数参数。
指令指针:
EIP(或称为指令指针)寄存器包含着下一条要执行的指令的地址。
EFLAGS寄存器
EFLAGS(或Flags)寄存器由控制CPU的操作或反映CPU某些运算的结果的独立二进制位组成。
某些标志被设置表示使其值等于1,被清除表示着其等于0。
状态标志:状态标志反映了CPU执行的算术和逻辑操作的结果,包括溢出,符号,零,辅助进位,奇偶和进位标志:
1,进位标志(CF):在无符号运算的结果无法容纳于目的操作数时被设置。
2,溢出标志(OF):在有符号运算的结果太宽(位数太多)而无法容纳于目的操作数中时被设置。
3,符号标志(SF):在算术或逻辑运算产生的结果位负时被设置。
4,零标志(ZF):在算术或逻辑运算中产生的结果位零时被设置。
5,奇偶标志(PF):在统计一个数值内值等于1的位数时,如果为1的总位数为偶数,则设置该标志,否则清除该标志。
6,辅助进位标志(AF):在算术运算导致8位操作数的位3到位4产生进位时被设置。
正在学微机原理,里面有一个汇编的问题找不到答案。请知道的来指导一下
判断指令中不合法的原因所在
MOVSS, 6180H
好象是代码段寄存器不能用MOV 指令啊
是不是SS也不能用呢,到底是什么原因呢。
大侠来指点下了。