X86汇编 伪指令

  在汇编语言源程序中,包含两种指令,一种是汇编指令,一种是伪指令。
汇编指令是有对应的机器码的指令,可以被编译为机器指令,最终为CPU
所执行。而伪指令没有对应的机器指令,最终不被CPU所执行,
它只是用来告诉编译器进行相关的编译工作。


看下面代码:

assume cs:codesg


codesg segment
         MOV AX, 0123H
         MOV BX, 0456H
         ADD AX, BX
         ADD AX, AX
         MOV AX, 4C00H
         INT 21H
codesg ends


end

 

1.
xxx segment
    :
    :
    :
xxx ends

segment 和ends是一对成对使用的伪指令,这是在写可被编译器的汇编程序时,必须要用到
的一对伪指令。segment和ends的功能是定义一个段,segment 说明一个段开始,ends 说明
一个段结果。 一个段必须有一个名称来标识,使用格式为:
段名 segment
      :
      :
段名 ends

看上面代码, 定义了一个名称为codesg的段.

 

2. end
end 是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令
end,就结束对源程序的编译,所以,在我们写程序的时候,如果程序写完了,要在结尾
处加上伪指令end.否则,编译器在编译程序时,无法知道程序在何处结束。

3. ASSUME
这条伪指令的含义为“假设”它假设某一段寄存器和程序中的某一个用segment...ends
定义的段相关联。通过assume说明这种关联,在需要的情况下,编译程序可以将段寄存
器和某一个具体的段相联系。用assume将有特定用途的段和相关的段寄存器关联起来。
看上面代码 codesg段与cs段寄存器关联了(assume cs:codesg), 根据cs段寄存器的功能可以知道codesg就是代码段

用法:ASSUME CS:段名, DS:段名, SS:段名, ES:段名

3 标号
汇编源程序中,除了汇编指令和伪指令外,还有一些标号,比如“codesg"。一个标号指代
了一个地址。比如 codesg在segment的前面,做为一个段的名称,这个段的名称最终将被编
译、连接程序处理为一个段的段地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值