nasm

汇编程序设计与计算机体系结构软件工程师教程笔记:指令

♀尐吖头ヾ 提交于 2020-10-08 02:27:22
《汇编程序设计与计算机体系结构: 软件工程师教程》这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译。中文版是2019年出版的。个人感觉这本书真不错,书中介绍了三种汇编器GAS、NASM、MASM异同,全部示例代码都放在了GitHub上,包括x86和x86_64,并且给出了较多的网络参考资料链接。这里只摘记了NASM和MASM,测试代码仅支持Windows和Linux的x86_64。 4. 基本指令 4.1 简介: 在很多情况下,MASM会根据上下文来推测指令中的操作数是什么类型,有的时候NASM也是这样。 在撰写指令的目标操作数时,如果要对变量解引用 (dereference) ,NASM 要求你必须指出大小 ,也就是必须在变量名的前面写上一个表示尺寸的命令,例如用BYTE表示字节、WORD表示字等,比方说像这样:”mov DWORD [test], eax” 4.2 数据的移动与算术运算: MOV指令有几条具体的要求: (1). 两个操作数的大小必须相同; (2). 两个操作数不能全是内存操作数(也就是说要想在两个内存操作数之间移动数据,必须用寄存器做中介); (3). 指令指针寄存器(ip/eip/rip)不能用作目标操作数。 使用XCHG指令可令两个位置上的数据彼此交换。和MOV指令类似,XCHG指令的两个操作数也不能全都是内存操作数。

汇编程序设计与计算机体系结构软件工程师教程笔记:函数、字符串、浮点运算

别等时光非礼了梦想. 提交于 2020-10-06 00:51:10
《汇编程序设计与计算机体系结构: 软件工程师教程》这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译。中文版是2019年出版的。个人感觉这本书真不错,书中介绍了三种汇编器GAS、NASM、MASM异同,全部示例代码都放在了GitHub上,包括x86和x86_64,并且给出了较多的网络参考资料链接。这里只摘记了NASM和MASM,测试代码仅支持Windows和Linux的x86_64。 6. 函数 6.2 栈内存入门: 栈内存 (stack memory) 是为自动变量而设的一块区域 (这里的自动变量是指局部变量,或者说非动态的变量)。调用函数的时候,需要用栈来保存函数中的局部变量,而函数结束的时候,则需要弃用这些变量。高级语言的一项特征在于它会自行管理栈内存(这有时也叫做运行时栈或运行期栈),相反,汇编语言不会这样做,而是需要你自己去管理。 与栈内存有关的重要事项: (1).栈会在调用函数时增长,并在调用结束时收缩。 (2).栈会在创建(或者说推入/压入)局部变量时增长,并在弃用(或者说弹出)局部变量时收缩。 (3).每个进程或线程的栈,其大小受操作系统限制,例如Linux/Mac系统默认是8MB,Windows默认是1MB。 (4).每次调用函数(这也包括调用主函数main(),以及递归地调用自身)都会出现对应的栈帧(stack frame)

nasm 汇编生成 windows 可执行文件

徘徊边缘 提交于 2020-10-03 20:45:50
default rel section .text extern MessageBoxA handler: sub rsp,40 mov rcx,0 lea rdx,[text] lea r8,[caption] mov r9,1 ; MB_OKCANCEL call MessageBoxA sub eax,1 ; incidentally suits as return value ; for exception handler add rsp,40 ret global main main: xor rax,rax mov rax,QWORD[rax] ; cause exception ret main_end: text: db 'OK to rethrow, CANCEL to generate core dump',0 caption:db 'SEGV',0 section .pdata rdata align=4 dd main wrt ..imagebase dd main_end wrt ..imagebase dd xmain wrt ..imagebase section .xdata rdata align=8 xmain: db 9,0,0,0 dd handler wrt ..imagebase section .drectve info db '

汇编程序设计与计算机体系结构软件工程师教程笔记:总结

隐身守侯 提交于 2020-10-01 11:28:54
《汇编程序设计与计算机体系结构: 软件工程师教程》这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译。中文版是2019年出版的。个人感觉这本书真不错,书中介绍了三种汇编器GAS、NASM、MASM异同,全部示例代码都放在了GitHub上,包括x86和x86_64,并且给出了较多的网络参考资料链接。这里只摘记了NASM和MASM,测试代码仅支持Windows和Linux的x86_64。 这里是基于之前所有笔记的简单总结,笔记列表如下: 处理器、寄存器简介: https://blog.csdn.net/fengbingchun/article/details/108164694 汇编语法基础知识: https://blog.csdn.net/fengbingchun/article/details/108165957 指令: https://blog.csdn.net/fengbingchun/article/details/108203513 函数、字符串、浮点运算: https://blog.csdn.net/fengbingchun/article/details/108419088 内联汇编与宏: https://blog.csdn.net/fengbingchun/article/details/108421641 其它架构: https:/