<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wa_junye的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wa_junye</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wa_junye]]></copyright><item><title><![CDATA[Windows中常用的函数调用规范]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/106745635</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/106745635</guid><author>wa_junye</author><pubDate>Sun, 14 Jun 2020 15:00:48 +0800</pubDate><description><![CDATA[参考了《汇编语言 基于x86处理器》
转载请注明出处
如果有错误的地方请指正，谢谢。
Windows环境中有32位调用规范和64位调用规范。
32位调用规范
Microsoft 32位编程环境下的32位调用规范有：_fastcall、_cdecl、_stdcall。
_fastcall
_fastcall使用寄存器加上堆栈传参，如果参数两个或两个以下那么使用ECX或者EDX寄存器传递，参数有两个以上则放入堆栈（从右向左入栈）。调用完毕后需要手动清栈（调用者清栈）。
_cdecl
又称为C调用规范，采用堆栈传]]></description><category></category></item><item><title><![CDATA[汇编语言中常用指令对标志位寄存器的影响]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/106307500</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/106307500</guid><author>wa_junye</author><pubDate>Sun, 24 May 2020 03:44:18 +0800</pubDate><description><![CDATA[参考了《汇编语言 基于x86处理器》第七版
转载请注明出处
如果有错误的地方请指正，谢谢。
文章目录算术运算（ADD/SUB）影响标志位ADD指令SUB指令NEG指令INC/DEC指令影响标志位INC指令DEC指令布尔指令影响标志位AND指令OR指令NOT指令XOR指令TEST指令移位指令影响标志位逻辑移位（SHL/SHR）算术移位（SAL/SAR）循环移位（ROL/ROR）带进位的循环移位（RCL/RCR）双精度移位（SHLD/SHRD）乘/除法影响标志位无符号乘法（MUL）有符号乘法（IMUL）单操作数]]></description><category></category></item><item><title><![CDATA[64位汇编中的布尔指令]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/105850474</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/105850474</guid><author>wa_junye</author><pubDate>Wed, 29 Apr 2020 22:53:25 +0800</pubDate><description><![CDATA[多数情况下，64位模式中的64位指令与32位模式中的操作数是一样的，比如源操作数是16/8位常数，而目标操作数是64位的内存操作数或者64位的寄存器，那么目标操作数中的所有位都会受到影响。
.data
	;在这里声明变量
	val qword 0ffffffffffffffffh;

.code 
	;这里写自己的代码
	mov rax,val;          RAX=FFFFFFFFFFFF...]]></description><category></category></item><item><title><![CDATA[在Visual Studio调试器中显示数组]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/105748923</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/105748923</guid><author>wa_junye</author><pubDate>Sat, 25 Apr 2020 14:16:45 +0800</pubDate><description><![CDATA[在调试期间，如果想要显示数组内容，步骤如下：
选择Debug（调试）菜单 → 选择Windows （窗口）→ 选择Memory（内存） → 选择Memory 1（内存 1），然后就可以拖动内存窗口到Visual Studio工作区的任何地方。

然后可以拖动内存窗口到工作区，我拖到了左下角。
在内存窗口中查找定义的数组：
;32位汇编程序模板 (Template)
.386
.model flat...]]></description><category></category></item><item><title><![CDATA[汇编语言中间接寻址（间接操作数）与变址寻址（变址操作数）的区别]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/105737878</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/105737878</guid><author>wa_junye</author><pubDate>Fri, 24 Apr 2020 19:11:04 +0800</pubDate><description><![CDATA[间接寻址
间接寻址就是使用寄存器作为指针，控制该寄存器的值来寻到数组中的元素，如：
array byte 10h,20h,30h;  定义数组
mov esi, offset array; 取数组首地址
inc esi;  esi指向数组第2个元素（下标为[1]）

上面的esi作为数组的指针，控制esi来寻到数组中的元素。
变址寻址
通过在原地址上增加一个寄存器、或者在原地址的基础上加上常数等方...]]></description><category></category></item><item><title><![CDATA[MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/105737003</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/105737003</guid><author>wa_junye</author><pubDate>Fri, 24 Apr 2020 18:47:13 +0800</pubDate><description><![CDATA[mov指令原则

两个操作数（目标操作数和源操作数）的大小必须相同
两个操作数不能同时为内存操作数（也就是不能内存 到 内存）
指令指针寄存器不能作为目标操作数

64位汇编程序下
   32位汇编程序和64位汇编程序都依照上面的规则，语法也相同，但如果如果是将源操作数给一个32位寄存器，那么这个寄存器所在的64位寄存器的高32位会被置0
例如：
;64位汇编程序模板 (Template)
;声明...]]></description><category></category></item><item><title><![CDATA[Visual Studio配置64/32位汇编程序开发环境]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/105617238</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/105617238</guid><author>wa_junye</author><pubDate>Sun, 19 Apr 2020 16:58:34 +0800</pubDate><description><![CDATA[参考了以下文章
VS2013 编写汇编程序
32位汇编程序
工具：VS2019

创建一个新的空项目

右键项目-生成依赖项-生成自定义

在弹出的“Visual C++ 生成自定义文件”窗口中勾上“masm”

在项目的“源文件”文件夹下右键-添加-新建项，弹出的“新建项”窗口中随便选择一个类型的文件（这里我选择的是C++文件），然后修改文件后缀名为“.asm”，最后点击“添加”。

注意：默认...]]></description><category></category></item><item><title><![CDATA[等号（=）伪指令、EQU伪指令、TEXTEQU伪指令之间的区别]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/105614061</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/105614061</guid><author>wa_junye</author><pubDate>Sun, 19 Apr 2020 14:15:17 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;这三种伪指令都是用来定义汇编语言中的符号常量，下面对它们各自的特点进行讲解
等号伪指令
等号伪指令用于定义整数或整数表达式的符号常量，语法为：

name = expression

如果“expression”为整数表达式则需要将它括起来。如：COUNT = (10 * 10)，等号伪指令定义的符号常量是可以被重定义的。
EQU伪指令
EQU伪指令可以定义非整数，语法为：...]]></description><category></category></item><item><title><![CDATA[Visual Studio生成汇编列表文件（listing file）]]></title><link>https://blog.youkuaiyun.com/wa_junye/article/details/105603979</link><guid>https://blog.youkuaiyun.com/wa_junye/article/details/105603979</guid><author>wa_junye</author><pubDate>Sat, 18 Apr 2020 20:02:43 +0800</pubDate><description><![CDATA[1.右键项目然后点击“属性”（Properties）

2.在“配置属性”（Configuration Properties）下选择 Microsotf Macro Assembler，展开后选择Listing File

3.修改Generate Preprocessed Source Listing 为 “是 (/EP)”，修改List All Available Information 为 ...]]></description><category></category></item></channel></rss>