汇编源程序

伪指令

汇编用 伪指令 来作为 关键字

segment/ends

区分代码块
所有代码必须在代码块中
格式

my_code_name segment
; 这里写具体的汇编代码
; 这里写具体的汇编代码
; 这里写具体的汇编代码
; 这里写具体的汇编代码
my_code_name ends

数据定义伪指令

[变量名] 数据定义伪指令 初始值

数据定义伪指令对照表

数据定义伪指令意义
val_str db 'string'定义字符串
val_byte db 1定义字节型数据(1Byte)
val_dword dw 2定义字型数据(2Byte)
val_ddword dd 4用2个字来组成一个双字(4Byte)
val_dq dq 8由4个字组成一个四字类型(8Byte)
val_dt dt 10由10个字节组成一个十字节类型(10Byte)
val_array db 256 dup(0)定一个 db类型的数组,长度为 256,初始值为0
val_array2 db 10 dup(1,2,3 7 dup(0))定一个 db类型的数组,长度为 10,前三个初始值为1,2,3 后7个初始值为0

其他 伪指令

start:
定义代码 标签,我们这里生命为 start
相当于 c中的main函数

end [lable]:
结束某个 标签

offset:
取某个变量的地址

seg:
获取某个代码块的地址

assume:
向编译器生命特殊的代码段

hello world


; 我们在这里设置 
; cs为 代码运行段
; ds为 数据段
; ss为栈空间
assume cs:code,ds:this_data,ss:this_stack

this_stack segment stack
    db 256 dup(0)
this_stack ends

this_data segment
    str1 db 'hello world$'
this_data ends


code segment

; 类似main函数作为asm起始点
start:
    ;锁定栈
    mov ax, seg this_stack
    mov ss, ax
    
    ;锁定数据区
    mov ax, seg this_data
    mov ds,ax
    
    ; 获取字符串偏移
    mov dx,offset str1


; 显示字符串
    mov ah,09h
    int 21h

; 安全退出
    mov ah,4ch
    int 21h


code ends


end start

Last modification:December 17, 2018
如果觉得我的文章对你有用,请随意赞赏