急~~~求助汇编语言中mov指令和add指令用法
在学英文的汇编书,课后练习没有答案,刚看到mov指令和add指令这块,不是很理解,看到练习,就更困惑了。如果我有四个数:data1SBYTE97data2SWORD-25...
在学英文的汇编书,课后练习没有答案,刚看到mov指令和add指令这块,不是很理解,看到练习,就更困惑了。如果我有四个数:
data1 SBYTE 97
data2 SWORD -256
data3 SDWORD 522
data4 SDWORD -1000
问题如下:
我感觉头两个应该这么写,后面的就不确定,汇编中数据传送和数据类型有关么?求大神帮忙看一下上面的问题应该怎么答,不胜感激!!!
a)mov -1000,EAX
b) mov -256, BX 展开
data1 SBYTE 97
data2 SWORD -256
data3 SDWORD 522
data4 SDWORD -1000
问题如下:
我感觉头两个应该这么写,后面的就不确定,汇编中数据传送和数据类型有关么?求大神帮忙看一下上面的问题应该怎么答,不胜感激!!!
a)mov -1000,EAX
b) mov -256, BX 展开
1个回答
推荐于2017-12-16
展开全部
1、linux和windows的代码编写是不一样的,linux上的汇编风格是at&t风格,而windows上的汇编风格是intel风格。 其中的一个区别是intel 风格是关于源操作数和目的操作数的。以第一个为例
//windows上的写法
mov eax, data4
//linux上的写法
movl data4, eax
所以,你使用的哪个平台你得闹明白。
2、如果是汇编代码,直接用标识符就好,还是不同的风格问题,如果按你写的立即数模式。
//windows上的写法
mov eax, -1000
//linux上的写法
movl $-1000, eax
在linux的at&t汇编风格中,它这个立即数是必须要加上$ 表示一个常量。 这个也是为什么你在C语言中一般不能使用$来做为标识符的一个原因哦。
建议:查一下intel风格和at&t风格的汇编区别点。问题都很简单,为了更好的帮助你,我上传了一份,详细介绍intel汇编语言程序设计的电子书,中文版的,希望能帮到你!
追问
原来不同平台写法也不一样啊,如果是windows系统,你能不能帮我回答一下上面的那些问题?我好做下笔记,课后习题都没有答案,要是记错了就糟了%>_<%
追答
恩,我帮你大体写了一下。
mov eax, word ptr data4
mov bx, word ptr data2
add word ptr data2, bx
mov ecx, word ptr data2
mov ebx, dword ptr data3
add ecx, ebx
mov dword ptr data4, ecx
mov dl, -18
lea esi, data1
mov byte ptr [esi], dl
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询