• 80X86学习笔记常用伪指令语句


    (1)符号定义语句

    1.等价语句EQU

    格式:

    符号名 EQU 表达式

    例:

    COUNT EQU 100  ;  符号COUNT就代表常数100

    BUFF_LEN EQU 4*COUNT  ;  COUNT是已定义的符号常数

    HELLO EQU “HELLO WORLD!”

    MOVE EQU MOV

    COUNT EQU CX

    用EQU可以用MOVE代替MOV,用COUNT代替寄存器CX.

    注意:第一,等价语句不另外给符号分配存储单元;第二,等价语句定义的符号不能与其他符号相同,也不能被重新定义,否则汇编程序会认为出现符号重复定义错误。

    2.等号语句(=)

    等号语句用来定义符号常数、

    格式:

    符号名= 数值表达式

    用符号语句定义的符号可被重新定义。

    3.定义符号名语句

    格式:

    符号名 LABEL 类型

    类型可以是BYTE WORD DWORD NEAR FAR等

    该语句的功能是定义有符号名指定的符号,使该符号的段属性和偏移属性与下一个紧接着的存储单元的段属性和偏移属性相同,使该符号的类型为参数所规定的类型。

    例:

    BUFFER LABEL WORD

    BUFF DB 100 DUP (0)

    BUFFER的类型是WORD,段属性和偏移属性与BUFF相同。

    例:

    QUIT LABEL FAR

    EXIT: MOV AH, 4CH

    MOV AH, 4CH有两个标号QUIT和EXIT,但它们类型不同。

    (2)段定义语句

    为了与存储器的分段结构相对应,汇编语言的源程序也是由若干个段组成。

    1.段开始和结束语句

    格式:

    段名 SEGMENT [定位类型][组合类型][‘类型’]

       ………

    段名  ENDS

    段名的命名方法与一般符号命名方法相同。

    一个简单的数据段如下所示:

    DSEG SEGMENT

             MESS DB ‘HELLO’, 0DH, 0AH, ‘$’

    DSEG ENDS

    承上:

    CSEG SEGMENT

             MOV AX, DSEG

             MOV DS, AX

             MOV DX, OFFSET MESS

             MOV AX, 9

             INT 21H

             MOV AH, 4CH

             INT 21H

    CSEG ENDS

    2.段使用设定语句

    汇编程序根据段开始语句和段结束语句判断出源程序的段划分,为了有效地产生目标代码,汇编程序还要了解各程序段与段寄存器的对应关系。段寄存器与程序段的对应关系由段设定语句说明。

    ASSUME 段寄存器名:段名[,段寄存器:段名…]

    段寄存器名可以是CS, DS ES,SS。

    例:

    CS对应CSEG段,DS对应DSEG段。

    ASSUME CS: CSEG, DS: DSEG

    ASSUME伪指令中的段名域也可以是一个特别的关键字NOTHING,它表示某个段寄存器不再与任何段有对应关系。

    DESEG1 SEGMENT

                 VARW DW 12H

    DESEG1 ENDS

    DSEG2 SEGMENT

                XXX DW 0

                YYY DW 0

    DSEG2 ENDS

    CSEG SEGMENT

    ASSUME CS: CSEG, DS:DSEG1, ES:DSEG2

    MOV AX, DSEG1

    MOV DS, AX

    MOV AX, DSEG2

    MOV ES, AX

    MOV AX, VARW

    MOV XXX, AX

    ASSUME DS: DSEG2, ES:NOTHING

    MOV AX, DSEG2

    MOV DS, AX

    MOV AX, XXX

    MOV YYY, AX

    CSEG ENDS

    3.ORG语句

    汇编程序在对源程序汇编的过程中,使用地址计数器来保存当前正在汇编指令或变量的地址偏移。

    格式:

    ORG 数值表达式

    例:

    TESTSEG SEGMENT

    ORG 100H

    BEGIN: MOV AX, 1234H

                 ORG 500H

    VAR DW 1234H

          …….

    TESTSEG ENDS

    汇编语言中用“$”表示地址计数器的值。

    例:表示跳过8个字节的存储区

    ORG $+8

    当$用在伪指令的参数中时,它表示地址计数器的当前值。

    例:

    ARRAY DW 1, 2, $+4, 3, 4, $+4

  • 相关阅读:
    OpenCV中的绘图函数
    整理不错的opencv博客
    opencv中的函数
    这是一个学习前端技术的网站
    HDU1520 Anniversary party(树形DP入门)
    CF1255C League of Leesins(图论)
    HDU4725 The Shortest Path in Nya Graph(最短路分层)
    1288C Two Arrays
    CF1294D MEX maxiszing
    CF1295C Obtain the String
  • 原文地址:https://www.cnblogs.com/seebro/p/2437472.html
Copyright © 2020-2023  润新知