一段简单汇编语言程序及说明

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



segment 和 ends 是一对成对使用的伪指令,这是在写可被编译器编译的汇编程序时必须要用到的一对伪指令,功能是定义一个段,segment说明段开始,ends说明段结束

格式为   段名 segment

             段名  ends

assume含义为假设,用来关联某一段寄存器和  segment....ends定义的段

例如  编程计算 2^3


assume cs:code

  code  segment

      mov ax,2

      mov ax,ax

      mov ax,ax

  code ends

end


程序返回 

mov ax,4c00h

int 21h


汇编源程序包括汇编指令和伪指令。其中汇编指令有对应的机器码指令,可以被编译为机器指令,最终为CPU所执行。伪指令由编译器来执行,编译器根据伪指令来进行相关的编译工作


loop指令的格式为   loop  标号

执行过程

1 (CX) = (CX)-1

2 判断cx是否为0,

不为0转向标号,为零则执行下一条语句

例如 计算 2^12


assume cs:code

    code    segment

        mov ax,2

        mov cx,11

    

    S: add ax,ax

        loop s

    

        mov ax,4c00h

        int 21h

    code ends

end



描述性符号 “()”

(AX)表示AX中的内容,(AL)表示AL中的内容

(20000H)表示内存20000H单元中的内容,()中的内容为内存单元的物理地址

()中的元素可以有3种类型:1 寄存器名  2段寄存器名 3内存单元的物理地址


例如

AX的内容为 0010H                   表示为     (AX)=0010H

2000:1000处为0010H                            (21000H)=0010H

mov ax,[2]                                                (AX ) = ((DS) * 16 +2)

mov [2],ax                                                ((DS) * 16 +2) = (AX)

ADD AX,2                                                (ax) = (ax) + 2

ADD AX,BX                                                (AX) =(AX) + (BX)

PUSH AX                                                    (SP) = (SP) - 2        ((SS) * 16 + (SP)) = (AX)

POP AX                                                        (AX) = ((SS) * 16 + (SP))             (SP) = (SP) - 2 


你可能感兴趣的:(汇编语言)