zoukankan      html  css  js  c++  java
  • 汇编语言-直接定址表

    汇编语言-直接定址表

    代码功能:
    将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
  • 相关阅读:
    笔记20200430:异常机制
    笔记20200429:面向对象
    笔记20200429:数组
    笔记20200428:方法的定义及调用、重装、命令行参数、可变参数、递归
    笔记20200427:javadoc文档、Scanner、顺序结构、选择结构、循环结构
    CSS+DIV入门第一天基础视频 CSS选择器层叠性和继承性
    网站实战 从效果图开始CSS+DIV 布局华为网站
    CSS中的间距设置与盒子模型
    CSS选择器
    CSS颜色及文本字体
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026850.html
Copyright © 2011-2022 走看看