![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
X86汇编
剑决浮云气
事了拂衣去,深藏功与名
展开
-
与数据相关的运算符和伪指令
1.OFFSET①返回数据标号的偏移量,这个偏移量按字节计算,表示该数据标号距离数据段起始地址的距离。.DATAMyInt DWORD 0MyByte BYTE 0MyShort WORD 0MyShortArr WORD 0,1,2,3,4,5,6,7,8,9,10.CODEMain PROC;过程开始 MOV EAX , OFFSET MyInt MOV EAX , OFFSET MyByte MOV EAX , OFFSET MyShort原创 2021-07-15 20:57:53 · 107 阅读 · 0 评论 -
加法和减法指令
根据目标操作数的值,溢出标志位,符号标志位,零标志位,辅助进位标志位,进位标志位和奇偶标志位会发生变化1.INC 和 DEC 指令INC(增加) DEC(减少)指令分别表示寄存器/内存当中的操作数+1/-1INC mem/regDEC mem/reg二者不会影响进位标志位2.ADD指令将长度相同的源操作数和目的操作数相加,存放在目的操作数当中ADD dest , source3.SUB指令长度相同的源操作数和目的操作数,从目的操作数中减去源操作数SUB dest, source原创 2021-07-15 10:23:30 · 2261 阅读 · 0 评论 -
MOV传送指令
1.MOV指令用来将源操作数复制到目的操作数当中,是一个数据传送指令。第一个操作数是目的操作数,第二个操作数是源操作数2.目的操作数的内容是会发生改变的,源操作数不会发生改变3.原则1.两个操作数的大小必须一致2.两个操作数不能都为内存操作数3.指令指针寄存器(IP EIP RIP)不能作为目的操作数MOV reg, regMOV reg, memMOV mem, regMOV mem, immMOV reg, imm内存到内存的拷贝 中间必须要经过寄存器4.整数的全0/符号拓原创 2021-07-14 20:46:22 · 3411 阅读 · 0 评论 -
X86符号常量
1.通常为整数表达式或者文本指定标识符来创建符号常量。符号不预留存储空间,只在汇编器扫描程序的时候使用,并且运行时不会被改变2.等号伪指令语法name = expressionCOUNT = 5003.当前地址计数器 $selfPtr DOWRD $ 定义了一个变量,并把当前该变量的地址赋给这个变量4.利用DUP来定义数组MaxSize = 500MyArr DWORD MaxSize DUP(0)5.利用$来计算数组大小注意 汇编和C不同 两个地址相减 他不会自动去除size原创 2021-07-13 20:26:17 · 82 阅读 · 0 评论 -
X86汇编数据类型
1.内部数据类型BYTE 8位无符号整数,B代表字节SBYTE 8位有符号整数,S代表有符号WORD 16位无符号整数SWORD 16位有符号整数DWORD 32位无符号整数,D代表双字SDWORD 32位有符号整数,SD代表有符号双字FWORD 48位整数(保护模式中的远指针)QWORD 80位(10字节整数),T代表10字节REAL4 32位(4字节)IEEE短实数REAL8 64位(8字节)IEEE长实数REAL10 80位(10字节)IEEE拓展实数2.数据定义语句数据原创 2021-07-13 19:43:37 · 384 阅读 · 0 评论 -
x86汇编初试数组
代码.386.MODEL FLAT, STDCALLExitProcess PROTO, dwExitCode:DWORD.STACK 4096.DATAMyArr DWORD 10H,20H,30H,40H.CODEMain PROC MOV EAX, [MyArr] MOV EAX, [MyArr+4] MOV EAX, [MyArr+8] MOV EAX, [MyArr+12] INVOKE ExitPr原创 2021-07-11 21:44:03 · 255 阅读 · 0 评论 -
汇编proto、proc、invoke伪指令与函数声明、函数定义、函数调用
一、proto伪指令–函数声明功能和高级语言中的函数声明一样,在代码最前面写函数声明,在后面写函数定义proto伪指令的格式函数名 proto [距离] [语言] [参数1]:数据类型,[参数2]:数据类型,……代码示例:Asm_Function_1 proto stdcall arg1:dword,arg2:dword一些注意事项32位汇编不需要指定距离可以指定语言也可也不指定,直接写参数,这里的语言就是和调用约定对等的。写“C”就是cdecl调用约定,写“stdcall”就是stdca转载 2021-07-11 12:22:05 · 2559 阅读 · 0 评论 -
初探MASM 汇编
两个数相加的一段汇编代码.386.model flat , stdcall.stack 4096ExitProcess PROTO , dwExitCode:DWORD.codemain PROC mov eax, 5 add eax, 6 INVOKE ExitProcess, 0main ENDPEND main①.386伪指令:表示这是一个32位程序,能访问32位寄存器和地址②.model flat , stdcall:.MODEL伪指令 告诉汇编程序原创 2021-07-11 12:16:15 · 249 阅读 · 0 评论