;数据传输指令
;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