;//数据传输示例
.386
.model flat, stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD
.data
val1 WORD 1000h
val2 WORD 2000h
arrayB BYTE 10h, 20h, 30h, 40h, 50h
arrayW WORD 100h, 200h, 300h
arrayD DWORD 10000h, 20000h
.code
main PROC
;// 演示 MOVZX 指令(零扩展)
mov bx, 0A69Bh
movzx eax, bx ;// EAX = 0000A69Bh
movzx edx, bl ;// EDX = 0000009Bh
movzx cx, bl ;// CX = 009Bh
;// 演示 MOVSX 指令(符号位扩展)
mov bx, 0A69Bh
movsx eax, bx ;// EAX = FFFFA69Bh
movsx edx, bl ;// EDX = FFFFFF9Bh
mov bl, 7Bh
movsx cx, bl ;// CX = 007Bh
;// 内存 - 内存交换
mov ax, val1 ;// AL = 1000h
xchg ax, val2 ;// AX = 2000h, val2 = 1000h
mov val1, ax ;// val1 = 2000h
;// 直接 - 偏移量寻址(字节数组)
mov al, arrayB ;// AL = 10h
mov al, [arrayB + 1] ;// AL = 20h
mov al, [arrayB + 2] ;// AL = 30h
;// 直接 - 偏移量寻址(字数组)
mov ax, arrayW ;// AX = 100h
mov ax, [arrayW + 2] ;// AX = 200h
;// 直接 - 偏移量寻址(双字数组)
mov eax, arrayD ;// EAX = 10000h
mov eax, [arrayD+4] ;// EAX = 20000h
INVOKE ExitProcess, 0
main ENDP
END main