汇编;8086/8088;代码格式及语法

本文详细介绍汇编语言的基础知识,包括代码格式的完整定义与简化定义、语法规范等内容。讲解了如何定义堆栈段、数据段及代码段,并介绍了模型、堆栈大小、数据段和代码段的设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、代码格式

完整定义:
    STACK  SEGMENT  STACK ;    定义堆栈段(可省略,系统有自带堆栈)
    DB    1024    DUP(?) ;    定义堆栈段大小
    STACK    ENDS ;    结束堆栈段定义
    DATA  SEGMENT ;    定义数据段
    ......
    数据
    ……
    DATA    ENDS ;    结束
    CODE    SEGMENT ;    定义代码段
    ASSUME    CS:CODE , DS:DATA , SS:SATCK ;    确定逻辑段类型
    START:    ;    程序开始
    ......
    代码
    ……

    CODE    ENDS ;    结束
        END    START ;    汇编结束,程序开始点为START

简化段定义:
    .MODEL    small ;    程序储存模式为small
    .STACK    1024 ;    定义堆栈段1024长度
    .DATA ;    数据段
    ……
    数据
    ……
    .CODE ;    代码段
START: ;    程序开始
    MOV    AX,@DATA ;    设置DS指向用户定义的数据段
    MOV    DS,AX
    ……
    代码
    ……
END    START ;    汇编结束,程序开始点为START
(.model+模式;决定了转移、子程序调用、数据访问时的缺省属性;且此伪指令自动产生相应ASSUME语句)

二、语法规范

1.标识符命名:最长31字符、第一不能是数字、'?' , '_' , '$' , '@'可放在任意位置,但'?' , '$'不可单独使用;
2.语 句 格 式:[语句标号: ]    指令名    操作数    ( ; 注释)
3.变 量 定 义:变量名    伪指令    初值表    ; DB、DW、DD、EQU
4.段   定   义:段名    SEGMENT    [定位]    [组合]    [段字]    ['类别']
    [定位]:PAGE(XXX00H开始)    PARA(XXXX0H)    DWORD(四倍数地址)    WORD(偶数地址)    BYTE(任意地址)
    (默认定位PARA)
    [组合]:PUBLIC    COMMON(同名长段覆盖短段)    STACK(基址->SS,初始化SP)    AT(定位在指出的边界上)    
                MEMORY(所有段的最高地址)
    (PUBLIC、STACK链接同名段
    [段字]:USE16 / USE 32(16 / 32位指令)
    (缺省16位)
    ['类别']:在单引号内任意名称,连接程序组织段时,同类分配相邻地址,保持代码、数据、堆栈的连续性;
5.ASSUME:ASSUME    段寄存器名:段名,……(设置段寄存器和段名的关系)
                    ASSUME    段名:NOTHING ;    (删除对……的设置)
    (
        另:1)DS与ES的装入
                        MOV    AX , 段名
                        MOV    DS/ES , AX
              2)SS与SP的装入(系统自动初始化)
              3)CS和IP的装入
                        END    起始地址标号
    )
6.定义伪指令:
              1)ORG :后面的数据/指令从指定偏移地址开始('$':当前的偏移值);
              2)EVEN:使下面的数据/指令从下一个偶地址开始;
              3)AGAIN:使下面的数据/指令从指定n的整倍数地址开始;
7.标号:名称 :    语句(短距离)
             名称    LABEL    类型 :    语句(类型决定距离、(变量类型))
             注:JMP    标号;时,跳不同类型,代码一样,执行操作不同;
8.过程定义:过程名    PROC    [NEAR/FAR] ;    (缺省NEAR)
                    ……
                    过程代码
                    ……
                    过程名    ENDP
9.宏定义:宏名称    MICRO    形参表
                ……
                宏定义体
                ……
                宏名称    ENDM
                调用:宏名称    实参表(缺省参数由空格替代)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值