随笔分类 -  汇编

摘要:因为战队新人的需要,再者因为自己当时学习的时候,对照答案都是东拼西凑,因此总结了自己学习笔记的答案,希望提供大家一些帮助。这里给出目录,大家可以直接上链接下载:https://wwa.lanzoui.com/i81ejsf TOC \o "1-5" \h \z \u 第二章 寄存器... PAGER 阅读全文
posted @ 2019-12-15 21:47 Hk_Mayfly 阅读(4995) 评论(7) 推荐(0)
摘要:准备 简介: PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名。 整个过程需要测试文件成品:https://www.lanzous.com/b07r7qu0d 首先使用PEiD检测之前做的一个异常捕捉测 阅读全文
posted @ 2019-12-01 19:26 Hk_Mayfly 阅读(2249) 评论(1) 推荐(1)
摘要: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 阅读(306) 评论(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 阅读(350) 评论(0) 推荐(0)
摘要:1 必要知识 地址:只有变量才有地址,常量没有地址,除了const定义的伪常量。 指针(TYPE *):任何数据类型都可以定义指针,指针本身也是一种数据类型。由于指针保存的都是地址(32位操作系统下,地址为32位),所以无论什么类型的指针都占据4字节空间。 引用(TYPE&):在C++中不能单独定义 阅读全文
posted @ 2019-09-21 21:19 Hk_Mayfly 阅读(629) 评论(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 阅读(5003) 评论(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 阅读(528) 评论(1) 推荐(0)
摘要:具体的在注释中都说明了。 jz指令:https://zhidao.baidu.com/question/564008138.html int 16的1号程序:https://zhidao.baidu.com/question/511189643.html 总结 汇编的难度并不大,我认为在有编程的基础 阅读全文
posted @ 2019-07-30 15:56 Hk_Mayfly 阅读(1011) 评论(0) 推荐(0)
摘要:17.4 应用int 13h中断例程对磁盘进行读写 3.5英寸软盘:2面,80磁道/面,18扇区/磁道,512字节/扇区,大小:1440KB≈1.44MB 面号,磁道号从0开始,扇区号从1开始。 将当前屏幕的内容保存在磁盘上 试验17 编写包含多个功能子程序的中断例程 测试程序 中断例程 阅读全文
posted @ 2019-07-29 00:02 Hk_Mayfly 阅读(244) 评论(1) 推荐(0)
摘要:16.4 程序入口地址的直接定址表 实验 16编写包含多个功能子程序的中断例程。 在这道题中,因为table...最终会被范围为cs:N[si]这种形式存储,当我们转移程序到0:200h处时,CS和IP改变,但是程序中table处没有改变,所以会引发定址错误。 测试程序 中断例程 转自百度:http 阅读全文
posted @ 2019-07-28 00:11 Hk_Mayfly 阅读(299) 评论(0) 推荐(0)
摘要:检测点15.1 (1) pushf call dword ptr ds:[0] (2) 设置int 9中断例程的地址的指令有两个部分: 在执行指令期间可能发生键盘中断,引发错误的地址执行,也就是IF寄存器可能为1,所以只要我们在执行这两段指令之间,令IF=0,即可保证程序正确。 15.5 安装新的i 阅读全文
posted @ 2019-07-26 23:59 Hk_Mayfly 阅读(267) 评论(0) 推荐(0)
摘要:第十四章 端口 CPU可以直接读写数据的地方: 14.1 端口的读写 对8位端口进行读写,用al保存数据,对16位端口进行读写,用ax保存数据 对0~255以内端口进行读写时 对256~65535端口进行读写时,需要用dx保存端口号 14.2 CMOS RAM 70h地址端口:存放要访问的CMOS 阅读全文
posted @ 2019-07-24 23:05 Hk_Mayfly 阅读(325) 评论(0) 推荐(0)
摘要:13.3 对int,iret和栈的深入理解 检测点13.1 (1)这道我认为主要是判断 这里是修改IP地址,即向前跳转距离,也即bx的范围。bx为十六位寄存器,范围在-32768~32767,即最大转移位移为32768 (2) 测试程序: 中断例程: 13.4 BIOS和DOS所提供的中断例程 通常 阅读全文
posted @ 2019-07-22 00:37 Hk_Mayfly 阅读(298) 评论(0) 推荐(0)
摘要:第十二章 内中断 12.1 内中断的产生 发生情况: 使用中断类型码的数据来标识中断信息的来源。 8086CPU中的中断类型码: 12.2 中断处理程序 12.3 中断向量表 定义:就是中断处理程序入口地址的列表 中断向量表存放着256个中断源所对应的中断处理程序的入口,8086CPU从0000:0 阅读全文
posted @ 2019-07-19 22:49 Hk_Mayfly 阅读(276) 评论(0) 推荐(0)