;数据传输指令 ;mov eax,1 mov 有两个操作数 ;mov reg32,imm32 ;操作数的类型 ;1.立即数 imm 包括imm8 imm16 imm32 ;2.寄存器操作数 eax ebx等操作数 ;3.内存操作数,引用内存位置 mem内存 mem8 mem16 mem32 ; reg 代表通用寄存器 ; reg8 8位寄存器 reg16 reg32 ; sreg 段寄存器 ;mov 目的操作数 源操作数 类似c中的 int a=15 mov a 15 ;两个操作数需要一样的位宽 ;方式 ;mov reg,reg 从寄存器到寄存器 ;mov mem,reg ;mov reg,mem ;........ 不能实现内存到内存,需要寄存器作为中间 ;movzx eax,cx 16位到32位 ;XCHG 交换两个操作数 ; xchg reg,reg 交换两个寄存器内容 ; xchg reg,mem 寄存器和内存交换值
.586 .MODEL flat,stdcall option casemap:none ; inc 是一个头文件 include windows.inc include user32.inc include kernel32.inc ;msvcrt.inc 引用c中的输入输出功能 include msvcrt.inc ;库文件 includelib user32.lib includelib kernel32.lib includelib msvcrt.lib .data format dd "%d",0 ;相当于 char *text "my name is wangtengxian!" text db "my name is wangtengxiang!",0 ;相当于 arrNum[20]={0} 数组 ;使用: mov [arrNum],1 给第一个元素赋值1 ; mov [arrNum + 4],2 4个字节一个元素,给第二个元素赋值 这里都是指针的意思 arrNum dword 20 dup(0) .code main proc mov [arrNum],12345678h mov [arrNum+4],11111111h push offset text call crt_printf add esp,4 call ExitProcess add esp,4 main ENDP END main