10 2023 档案
摘要:浮点单元(Floating-Point Unit, FPU) 执行高速浮点算术运算。之前为了实现这个目的,需要一个单独的协处理器芯片。从Intel486开始, FPU已经集成到主处理器芯片上了。FPU 中有8个浮点数据寄存器,分别命名为ST(0)、ST(1)、ST(2)、ST(3)、ST(4)、ST
阅读全文
摘要:分支语句用来根据条件表达式测试的真假执行不同的代码模块, MASM中的分支语句的语法如下: 注意:关键字if/elseif/else/endif的前面有个小数点, 如果不加小数点, 就变成宏汇编中的条件汇编伪操作了,结果可是天差地别。
阅读全文
摘要:MASM条件测试的基本表达式是: 两个以上的表达式可以用逻辑运算符连接: 允许的操作符和逻辑运算符如表3.5所示。 细心的读者一定会发现, MASM的条件测试采用的是和C语言相同的语法。如!和&是对变量的操作符(取反和“与”操作),Ⅱ和&&是表达式结果之间的逻辑“与”和逻辑“或”,而==、!=、>、
阅读全文
摘要:movzx无符号扩展指令 一般用于将较小值拷贝到较大值中。 movzx是将源操作数的内容拷贝到目的操作数,并将该值用0扩展至16位或者32位。但是它只适用于无符号整数。 他大致下面的三种格式。 movzx 32位通用寄存器, 8位通用寄存器/内存单元 movzx 32位通用寄存器, 16位通用寄存器
阅读全文
摘要:寄存器是CPU内部的高速存储单元,由于是固化在CPU内部的组件,其访问速度快于内存,在当下的处理器中寄存器分为几种类型: 通用寄存器 8个通用寄存器(EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI) 8个通用寄存器主要用于算数运算和数据的传送,这8个寄存器都可以作为一个32位的值或两
阅读全文
摘要:当程序中要跳转到另一位置时,需要有一个标识来指示新的位置,这就是标号,通过在目标地址的前面放上一个标号,可以在指令中使用标号来代替直接使用地址。 使用变量是任何编程语言都要遇到的工作, Win 32汇编也不例外, 在MASM中使用变量也有需要注意的几个问题,错误地使用变量定义或用错误的方法初始化变量
阅读全文
摘要:32位寄存器 64位寄存器 浮点单元寄存器 64位操作模式 整数的进制标识 算术运算符 实数 字符串 标识符 注释 VS2019汇编环境设置 源程序结构 段的定义 调用API 创建子程序 子程序利用堆栈传递参数 局部变量压栈 子程序x64调用规约 递归 Unicode还是ANSI版本 数据类型 变量
阅读全文
摘要:Win32API是用堆栈来传递参数的, 调用者把参数一个个压入堆栈, DLL中的函数程序再从堆栈中取出参数处理, 并在返回之前将堆栈中已经无用的参数丢弃。 在Microsoft发布的《Microsoft Win 32 Programmer's Reference》中定义了常用API的参数和函数声明,
阅读全文
摘要:用Ml.exe编译的COFF格式的obj文件可以用Link.exe链接成可执行PE文件, Microsoft 的Link.exe有两个系列的版本, 用于链接DOS程序的链接器为Seg rented Executable Linker;可以链接Win32PE文件的链接器为Incremental Lin
阅读全文
摘要:不同版本的MASM在使用上有很大的不同, 本节所指的是可用于Win 32汇编编程的MASM 6.14及以上版本, MASM编译器的命令行用法为: Ml [/选项] 汇编源文件列表 [/link链接选项] 要注意的是汇编选项要集中写在源文件名的前面,比如下面的两条命令:Ml /c /coff /Cp
阅读全文
摘要:MASM32_SDKv10r 下载: 链接:https://pan.baidu.com/s/1095X2t6rWV6aqDryBOuPjA 提取码:6666 安装: 1. 自动安装到masm32文件夹 编译过程 方法一:利用qeditor.exe 安装之后桌面会有一个,就是qeditor.exe 可
阅读全文
摘要:48位寄存器IDTR: IDTR的高32位指定了IDT在内存中的基址(线性地址) , 低16位指定了IDT的长度, 相当于指定了可以支持的中断数量
阅读全文
摘要:为了使高优先级的代码能够安全地被低优先级的代码调用,保护模式下增加了“门”的概念。“门”指向某个优先级高的程序所规定的入口点,所有优先级低的程序调用优先级高的程序只能通过门重定向,进入门所规定的入口点。这样可以避免低级别的程序代码从任意位置进入优先级高的程序的问题。保护模式下的中断和异常等服务程序也
阅读全文