社区
汇编语言
帖子详情
leal 7(%edx,%edx,4),%eax什么意思,谁能解释一下
lightyacht
2008-05-15 02:13:45
leal不是传送有效地址吗
可就是看不懂这句话啥意思
leal 7(%edx,%edx,4),%eax
尤其是7(%edx,%edx,4)
...全文
2087
6
打赏
收藏
leal 7(%edx,%edx,4),%eax什么意思,谁能解释一下
leal不是传送有效地址吗 可就是看不懂这句话啥意思 leal 7(%edx,%edx,4),%eax 尤其是7(%edx,%edx,4)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
glchen57
2008-05-16
打赏
举报
回复
AT&T语法,base(offset, index, i),就是 base+offset+index*i
maplewasp
2008-05-16
打赏
举报
回复
1
同意2楼的
eax = 5*edx + 7,即 eax = (edx + 4 * edx) + 7
dongyi940333
2008-05-15
打赏
举报
回复
同意LS的^_^
cnzdgs
2008-05-15
打赏
举报
回复
不懂这种汇编,猜一下,用MASM可能是这样写:
lea eax, [edx+edx*4+7]
ncdfly
2008-05-15
打赏
举报
回复
eax = 5*edx + 7
用户 昵称
2008-05-15
打赏
举报
回复
如果在masm的语法,7表示+7的意思,比如4[bx]就表示[bx+4],在C中,访问数组的元素也可以用这种写法,但是此句话还是不太懂。
计算机系统基础第二次作业.doc
计算机系统基础第二次作业 计算机系统基础第二次作业 3、对于以下AT&T格式汇编指令,根据操作数的长度确定对应指令助记符中的长度后缀, 并说明每个操作数的寻址方式。 (1)mov 8(%ebp, %ebx, 4), %ax (2)mov %al, 12(%ebp) (3)add ( , %ebx,4), %ebx (4)or (%ebx), %dh (5)push $0xF8 (6)mov $0xFFF0, %
eax
(7)test %cx, %cx (8)lea 8(%ebx, %esi), %
eax
答:如下表所示: "题目编号 "长度后缀 "源操作数 "目的操作数 " "(1) "w "基址+比例变址+位移 "寄存器 " "(2) "b "寄存器 "基址+位移 " "(3) "l "比例变址 "寄存器 " "(4) "b "基址 "寄存器 " "(5) "l "立即数 "栈 " "(6) "l "立即数 "寄存器 " "(7) "w "寄存器 "寄存器 " "(8) "l "基址+变址+位移 "寄存器 " 4. 使用汇编器处理以下各行AT&T格式代码时都会产生错误,请说明每一行存在什么错误。 (1)movl 0xFF, (%
eax
) (2)movb %ax, 12(%ebp) (3)addl %ecx, $0xF0 (4)orw $0xFFFF0, (%ebx) (5)addb $0xF8, (%dl) (6)movl %bx, %
eax
(7)andl %esi, %esx (8)movw 8(%ebp, , 4), %ax 答: (1)书写错误。因为源操作数是立即数0xFF,所以需要在前面加上'$' (2)由于源操作数(%ax)是16位,而长度后缀是字节'b',所以不一致,应改为'movw ' (3)目的操作数不能是立即数寻址 (4)操作数位数超过16位,而长度后缀为16位的'w',应改为'orl' (5)不能用8位寄存器作为目的操作数地址所在寄存器 (6)源操作数寄存器与目的操作数寄存器长度不一致 (7)不存在ESX寄存器 (8)源操作数地址中缺少变址寄存器 7. 假设变量x和y分别存放在寄存器
EAX
和ECX中,请给出以下每条指令执行后寄存器
EDX
中的 结果。 (1)
leal
(%
eax
), %
edx
(2)
leal
4(%
eax
, %ecx), %
edx
(3)
leal
(%
eax
, %ecx, 8), %
edx
(4)
leal
0xC(%ecx, %
eax
, 2), %
edx
(5)
leal
( , %
eax
, 4), %
edx
(6)
leal
(%
eax
, %ecx), %
edx
答: (1)R[
edx
]=x //把
eax
的值放到
edx
中去 (2)R[
edx
]=x+y+4 //把
eax
+ecx+4的值放到
edx
中去 (3)R[
edx
]=x+8*y //把
eax
+8*ecx的值放到
edx
中去 (4)R[
edx
]=y+2*x+12 //把ecx+2*
eax
+12的值放到
edx
中去 (5)R[
edx
]=4*x //把4*
eax
的值放到
edx
中去 (6)R[
edx
]=x+y //把
eax
+ecx的值放到
edx
中去 8.假设以下地址以及寄存器中存放的机器数如下表所示 "地址 "机器数 "寄存器 "机器数 " "0x8049300 "0xfffffff0 "
EAX
"0x8049300 " "0x8049400 "0x80000008 "EBX "0x100 " "0x8049384 "0x80f7ff00 "ECX "0x10 " "0x8049380 "0x908f12a8 "
EDX
"0x80 " 分别说明执行以下指令或寄存中的内容交发生改变?改变后的内容是什么条件标志OF 、 SF 、 ZF 和 CF 会发生什么改变。 (1)指令功能为:R[
edx
] R[
edx
]+M[R[
eax
]]=0x00000080+M[0x8049300],寄存器
EDX
中内 容改变。改变后的 内容为以下运算的结果:00000080H+FFFFFFF0H 0000 0000 0000 0000 0000 0000 1000 0000 + 1111 1111 1111 1111 1111 1111 1111 0000 _______________________________________________ 1 0000 0000 0000 0000 0000 0000 0111 0000 因此,
EDX
中的内容改变为0x00000070。根据表3.5可知,加法指令会影响OF、SF、ZF和 CF标志。OF=0,ZF=0,SF=0,CF=1。 (2)指令功能为:R[ecx] R[ecx]-M[R[
eax
]+R[ebx]]=0x00000010
计算机系统基础_题1
1. 请完成下列数制转换 2. 请计算各表达式的结果,其中 char a = 0x96, b = 0xAA 5. 已知寄存器 %
eax
和 %ecx 的值和内存
计算机系统基础第二次作业(1).doc
计算机系统基础第二次作业 3、对于以下AT&T格式汇编指令,根据操作数的长度确定对应指令助记符中的长度后缀, 并说明每个操作数的寻址方式。 (1)mov 8(%ebp, %ebx, 4), %ax (2)mov %al, 12(%ebp) (3)add ( , %ebx,4), %ebx (4)or (%ebx), %dh (5)push $0xF8 (6)mov $0xFFF0, %
eax
(7)test %cx, %cx (8)lea 8(%ebx, %esi), %
eax
答:如下表所示: "题目编号 "长度后缀 "源操作数 "目的操作数 " "(1) "w "基址+比例变址+位移 "寄存器 " "(2) "b "寄存器 "基址+位移 " "(3) "l "比例变址 "寄存器 " "(4) "b "基址 "寄存器 " "(5) "l "立即数 "栈 " "(6) "l "立即数 "寄存器 " "(7) "w "寄存器 "寄存器 " "(8) "l "基址+变址+位移 "寄存器 " 4. 使用汇编器处理以下各行AT&T格式代码时都会产生错误,请说明每一行存在什么错误。 (1)movl 0xFF, (%
eax
) (2)movb %ax, 12(%ebp) (3)addl %ecx, $0xF0 (4)orw $0xFFFF0, (%ebx) (5)addb $0xF8, (%dl) (6)movl %bx, %
eax
(7)andl %esi, %esx (8)movw 8(%ebp, , 4), %ax 答: (1)书写错误。因为源操作数是立即数0xFF,所以需要在前面加上'$' (2)由于源操作数(%ax)是16位,而长度后缀是字节'b',所以不一致,应改为'movw ' (3)目的操作数不能是立即数寻址 (4)操作数位数超过16位,而长度后缀为16位的'w',应改为'orl' (5)不能用8位寄存器作为目的操作数地址所在寄存器 (6)源操作数寄存器与目的操作数寄存器长度不一致 (7)不存在ESX寄存器 (8)源操作数地址中缺少变址寄存器 7. 假设变量x和y分别存放在寄存器
EAX
和ECX中,请给出以下每条指令执行后寄存器
EDX
中的 结果。 (1)
leal
(%
eax
), %
edx
(2)
leal
4(%
eax
, %ecx), %
edx
(3)
leal
(%
eax
, %ecx, 8), %
edx
(4)
leal
0xC(%ecx, %
eax
, 2), %
edx
(5)
leal
( , %
eax
, 4), %
edx
(6)
leal
(%
eax
, %ecx), %
edx
答: (1)R[
edx
]=x //把
eax
的值放到
edx
中去 (2)R[
edx
]=x+y+4 //把
eax
+ecx+4的值放到
edx
中去 (3)R[
edx
]=x+8*y //把
eax
+8*ecx的值放到
edx
中去 (4)R[
edx
]=y+2*x+12 //把ecx+2*
eax
+12的值放到
edx
中去 (5)R[
edx
]=4*x //把4*
eax
的值放到
edx
中去 (6)R[
edx
]=x+y //把
eax
+ecx的值放到
edx
中去 8.假设以下地址以及寄存器中存放的机器数如下表所示 "地址 "机器数 "寄存器 "机器数 " "0x8049300 "0xfffffff0 "
EAX
"0x8049300 " "0x8049400 "0x80000008 "EBX "0x100 " "0x8049384 "0x80f7ff00 "ECX "0x10 " "0x8049380 "0x908f12a8 "
EDX
"0x80 " 分别说明执行以下指令或寄存中的内容交发生改变?改变后的内容是什么条件标志OF 、 SF 、 ZF 和 CF 会发生什么改变。 (1)指令功能为:R[
edx
] R[
edx
]+M[R[
eax
]]=0x00000080+M[0x8049300],寄存器
EDX
中内 容改变。改变后的 内容为以下运算的结果:00000080H+FFFFFFF0H 0000 0000 0000 0000 0000 0000 1000 0000 + 1111 1111 1111 1111 1111 1111 1111 0000 _______________________________________________ 1 0000 0000 0000 0000 0000 0000 0111 0000 因此,
EDX
中的内容改变为0x00000070。根据表3.5可知,加法指令会影响OF、SF、ZF和 CF标志。OF=0,ZF=0,SF=0,CF=1。 (2)指令功能为:R[ecx] R[ecx]-M[R[
eax
]+R[ebx]]=0x00000010+M[0x8049400]
计算机系统基础第二次作业(20211010082242).pdf
计算机系统基础第二次作业(20211010082242)
计算机组成实验.doc
计算机组成实验.doc
汇编语言
21,497
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章