• 汇编语言-直接定址表


    汇编语言-直接定址表

    代码功能:
    将a地址中的1~8的数值相加,并保存到b地址中。

    assume cs:code  
    
    code segment  
        a:db 1,2,3,4,5,6,7,8  
        b:dw 0  
    start:  
        mov si,offset a  
        mov di,offset b  
    
        mov ah,0  
        mov cx,8  
    s:  
        mov al,cs:[si]  
        add cs:[di],ax  
        inc si  
        loop s  
    
        mov ax,4c00h  
        int 21h  
    
        mov ax,4c00h  
        int 21h  
    code ends  
    
    end start  

    仔细看一下,下面代码的标号的不同。下面的标号a、b后面没有冒号。它们是可以描述单元长度的标号。又叫数据标号

    assume cs:code  
    
    code segment  
        a db 1,2,3,4,5,6,7,8  
        b dw 0  
    start:  
        mov si,offset a  
    
        mov ah,0  
        mov cx,8  
    s:  
        mov al,a[si]  
        add b,ax  
        inc si  
        loop s  
    
        mov ax,4c00h  
        int 21h  
    
        mov ax,4c00h  
        int 21h  
    code ends  
    
    end start  

    数据标号详解

    数据标号不但表示内存单元的地址,还表示了内存单元的长度,即表示在此标号处的单元,是一个字节单元,还是字单元,还是双字节单元。

    我们可以:

    mov ax,b        相当于  mov ax,cs:[8]
    mov b,2         相当于  mov word ptr cs:[8],2
    inc b           相当于inc   word ptr cs:[8]
    mov al,a[si]    相当于 mov al,cs:0[si]
    mov al,a[3]     相当于mov al,cs:0[3]

    但是下面的是错的

    mov al,b  因为b是dw,字型的
    add  b,al

    在其他段中使用数据标号

    普通的后面带有“:”的标号,是只能定义在代码段的。数据标号可以用在其他段中。


    下面代码是上面代码的改进版:

    assume cs:code,ds:data  
    
    data segment  
        a db 1,2,3,4,5,6,7,8  
        b dw 0  
    data ends  
    
    code segment  
    
    start:  
        mov ax,data  
        mov ds,ax  
    
        mov si,offset a  
    
        mov ah,0  
        mov cx,8  
    s:  
        mov al,a[si]  
        add b,ax  
        inc si  
        loop s  
    
        mov ax,4c00h  
        int 21h  
    
        mov ax,4c00h  
        int 21h  
    code ends  
    
    end start  
    1. 如果想把ds:b 直接写成 b,就必须在assume 后加上 cs:data
    2. 如果把ds和b寄存联系起来,那么在代码中,必须设置 mov ax,data mov ds,ax
  • 相关阅读:
    Delphi接口
    delphi cxgrid导出excel去除货币符号
    DelphiXE4- System.IOUtils.TDirectory笔记查询后缀名为dll的文件
    Kivy中文显示
    AppDomain与进程、线程、Assembly之间关系
    Attributes(2): Displaying attributes for a class.(显示类属性)
    Attributes(2): Displaying attributes for a class.(显示类属性)
    Attributes(1):反射Attribute并输出
    大数据乘法
    Qt中利用QDomDocument读写xml小Demo
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026850.html
Copyright © 2020-2023  润新知