Skip to content

段定义

标签:汇编语言
创建时间:2020年10月01日 13:46:44

段定义三步走 ​

段定义 ​

  1. 关键字:segment(开始) ends(结束)

  2. 段名:不得超过八个字符。一般情况下,

    • code 表示代码段。
    • data 表示数据段
  3. 语法

    段名 segment
    
    段名 ends

段关联 ​

  1. 关键字:assume

  2. 类型:CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段)

  3. 语法:

    assume 类型:段名
  4. 例:定义一个代码段 code,定义一个数据段 data

    code segment
    	assume cs:code,ds:data
    code ends
    
    data segment
    
    data ends

段传送 ​

  1. 传送是将段中的数据传到指定的段寄存器中。例如,讲 data 中的数据传到 DS 数据段中,在关联的时候并没有真正的传递数据。

  2. 代码段在定义时不需要段传送,其他段都需要手动传送。

  3. 通过 mov 不能将段直接传递给段寄存器,可以间接行传送。

    ……
    mov ax,data
    mov ds,ax
    ……

    这段代码表示,现将 data 数据段存到 ax 中,再将 ax 中的数据存到 ds 中。

数据段 ​

开辟空间的伪指令 ​

  1. db:开辟一个字节空间。
  2. dw:开辟一个字空间。(两个字节)
  3. dup:循环存字符

存储数据 ​

  1. 存储 10 进制数据时,直接写入。
  2. 存储字符数据时用单引号扩起来,最终在 debug 模式下现实的是该字符 ASCII 码16进制表现形式。

语法格式 ​

  1. 无地址符号

  2. 有地址符号

代码演示 ​

  1. 使用 db 定义 5 个奇数,将第一个数存到 AH 中,最后一个数存到 AL 中。

    最终,AX=0109,恰好是 AH 与 AL 的拼接。

  2. 使用 dw 定义 5 个奇数,存入 AX 中。

  3. 利用 dup 开辟三个单字节空间

    data segment
        str db 3 dup(5)
    data ends
    code segment
        assume cs:code,ds:data
        main:
            mov ax,data
            mov ds,ax
            
        edit:
            mov ah,4ch
            int 21h
    code ends
        end main

基于 MIT 许可发布