x86 汇编/MASM 语法
外观
< X86 汇编
本页将解释使用 MASM 语法的 x86 编程,并将讨论如何使用 MASM 的宏功能。其他汇编器,如 NASM 和 FASM,使用与 MASM 不同的语法,但它们都使用 Intel 语法。
MASM 指令的运算符通常与 GAS 指令相反。例如,指令通常写成 指令 目标, 源。
mov 指令,写成如下
mov al, 05h
将把值 5 移动到 al 寄存器。
MASM 不使用指令后缀来区分大小(字节、字、双字等)。
MASM 被称为“宏汇编器”或“Microsoft 汇编器”,这取决于你问谁。但无论你的答案来自哪里,事实是 MASM 有一个强大的宏引擎,以及许多立即可用的内置宏。
MASM 有大量指令可以控制某些设置和行为。与 NASM 或 FASM 相比,它有更多指令。
.model small
.stack 100h
.data
msg db 'Hello world!$'
.code
start:
mov ah, 09h ; Display the message
lea dx, msg
int 21h
mov ax, 4C00h ; Terminate the executable
int 21h
end start
;template for masm510 programming using simplified segment definition
title YOUR TITLE HERE
page 60,132
;tell the assembler to create a nice .lst file for the convenience of error pruning
.model small
;maximum of 64KB for data and code respectively
.stack 64
.data
;PUT YOUR DATA DEFINITION HERE
.code
main proc far
;This is the entry point,you can name your procedures by altering "main" according to some rules
mov ax,@DATA
;load the data segment address,"@" is the opcode for fetching the offset of "DATA","DATA" could be change according to your previous definition for data
mov ds,ax
;assign value to ds,"mov" cannot be used for copying data directly to segment registers(cs,ds,ss,es)
;PUT YOUR CODE HERE
mov ah,4ch
int 21h
;terminate program by a normal way
main endp
;end the "main" procedure
end main
;end the entire program centering around the "main" procedure