随笔分类 -  汇编--32位汇编

摘要:10.1 结构 10.1.1 定义结构 name STRUCT field-declarations name ENDS Employee STRUCT IdNum BYTE "000000000" LastName BYTE 30 DUP(0) Years WORD 0 SalaryHistory 阅读全文
posted @ 2019-11-12 17:05 Hk_Mayfly 阅读(358) 评论(0) 推荐(1)
摘要:9.2 基本字符串操作指令 32 位模式中,下表中的每条指令都隐含使用 ESI、EDI,或是同时使用这两个寄存器来寻址内存。 指令说明 MOVSB、MOVSW、MOVSD 传送字符串数据:将 ESI 寻址的内存数据复制到 EDI 寻址的内存位置 CMPSB、CMPSW、CMPSD 比较字符串:比较分 阅读全文
posted @ 2019-11-11 16:02 Hk_Mayfly 阅读(227) 评论(0) 推荐(0)
摘要:5.3 本书附带的链接库 Irvine32.lib 过程说明 CloseFile 关闭之前已经打开的磁盘文件 Clrscr 清除控制台窗口,并将光标置于左上角 CreateOutputFile 为输出模式下的写操作创建一个新的磁盘文件 Crlf 在控制台窗口中写一个行结束的序列 Delay 程序执行 阅读全文
posted @ 2019-11-07 20:10 Hk_Mayfly 阅读(305) 评论(0) 推荐(0)
摘要:8.2 堆栈框架 汇编中,函数传参分为寄存器参数和堆栈参数(值参数和引用参数) 8.2.1 堆栈参数 传递值 TITLE test ;假设等价函数调用为int sum = AddTwo(val1,val2); INCLUDE Irvine32.inc AddTwo PROTO,a:DWORD,b:D 阅读全文
posted @ 2019-11-04 22:10 Hk_Mayfly 阅读(255) 评论(0) 推荐(0)
摘要:7.2 移位和循环移位指令 7.2.1 算术移位和逻辑移位 逻辑移位:以0填充移出位,最低的数据移动进入进位标志。 算术移位:以符号位填充。 7.2.2 SHL指令和SHR指令 逻辑左移,应用在快速乘法。 逻辑右移,应用在快速除法 7.2.4 SAL和SAR 算术左移和算术右移 应用:有符号数的除法 阅读全文
posted @ 2019-10-26 11:41 Hk_Mayfly 阅读(743) 评论(0) 推荐(0)
摘要:6.1 布尔和比较指令 6.2.4 XOR指令 对 16 位整数来说,可以通过将其高字节和低字节进行异或运算来检测数的奇偶性: 将每个寄存器中的置 1 位(等于 1 的位)想象为一个 8 位集合中的成员。XOR 指令把两个集合交集中的成员清 0,并形成了其余位的并集。这个并集的奇偶性与整个 16 位 阅读全文
posted @ 2019-10-07 23:53 Hk_Mayfly 阅读(349) 评论(0) 推荐(0)
摘要:5.4 堆栈操作 5.4.2 POP和PUSH指令 PUSHFD 指令把 32 位 EFLAGS 寄存器内容压入堆栈,而 POPFD 指令则把栈顶单元内容弹出到 EFLAGS 寄存器: PUSHAD 指令按照 EAX、ECX、EDX、EBX、ESP(执行 PUSHAD 之前的值)、EBP、ESI 和 阅读全文
posted @ 2019-09-19 09:27 Hk_Mayfly 阅读(318) 评论(0) 推荐(0)
摘要:1.库文件(很重要) 用我这一份就行:https://www.lanzous.com/i6364hg 2.VS依赖库 打开VS2019,选择桌面向导 配置项目时,选择新项目。 选择生成依赖项 选中masm 3.asm项目配置 新建一个C++的源文件,将后缀改为asm 选择上面的项目,再选择"项目名" 阅读全文
posted @ 2019-09-09 09:11 Hk_Mayfly 阅读(5002) 评论(0) 推荐(0)
摘要:4.1 数据传送指令 4.1.2 操作数类型 操作数有 3 种基本类型: 立即数——用数字文本表达式 寄存器操作数——使用 CPU 内已命名的寄存器 内存操作数——引用内存位置 直接内存操作数:变量名引用的是数据段内的偏移量。 4.2 加法和减法 4.2.4 NEG指令 NEG:通过将数字转换为对应 阅读全文
posted @ 2019-09-07 20:53 Hk_Mayfly 阅读(533) 评论(0) 推荐(0)
摘要:3.2整数相加减 3.3 汇编链接执行周期 3.4 定义数据 数据定义语法: [name] directive initializer [,initializer]... 下面是数据定义语句的一个例子: count DWORD 12345 也可以用 3.4.10 为AddSub添加变量 3.4.12 阅读全文
posted @ 2019-09-07 08:41 Hk_Mayfly 阅读(527) 评论(1) 推荐(0)