8.汇编语言--数据传输指令mov等

 

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


 

posted @ 2021-03-09 20:18  包子TT  阅读(725)  评论(0编辑  收藏  举报