• [汇编学习笔记][第八章数据处理的两个基本问题]


    第八章 数据处理的两个基本问题

    本章对前面具有总结性。主要解决以下两个问题

    • 处理的数据在什么地方
    • 要处理的数据有多长

    定义描述符号reg和sreg

    • reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;
    • sreg:ds,ss,cs,es。

    8.1 bx,si,di和bp

    • 在8086CPU中,只有这4个寄存器可以用在"[..]"当中来进行内存单元的寻址。
    • 4种寄存器可以单独出现,否则只能以这四种组合出现

      • bx和si
      • bx和di
      • bp和si
      • bp和di
    • 重点:只要在[..]中使用bp,而指令中没有显性地给出地址,段地址默认为ss中

    • 不太懂这三个规则的由来

    8.2 机器指令处理的数据在什么地方

    在机器指令这一层来说,不关心数据的值,关心指令执行前一刻,他将要处理的数据的位置。

    • CPU内部
    • 内存
    • 端口

    8.3 汇编语言中数据位置的表达

    • 立即数(idata)

      执行前在CPU的指令缓冲器中

    • 寄存器

      在CPU内寄存器中

    • 段地址(SA)和偏移地址(EA)

      在内存或端口

    8.4 寻址方式

    8.4.1 直接寻址

    形式 [idata]

    含义 普通变量

    8.4.2 寄存器间接寻址

    形式 [bx],[si],[di],[bp]

    含义

    • 数组

    8.4.3 寄存器相对寻址

    形式 [bx+idata]….idata[bx]….[bx].idata

    含义

    • 二维数组 [bx][idata]
    • 一维数组 idata[bx]
    • 结构体 [bx].idata

    8.4.4**基址变址寻址**

    形式 [bx+si],[bx+di],[bp+si],[bp+di]

    含义

    • 二维数组 [bx][si]

    8.4.5 相对基址变址

    形式 [bx+si+idata],[bx].idata[si],idata[bx][si]

    含义

    • 普通数组 [bx+si+idata]
    • 结构中的数组 [bx].idata[si]
    • 二维数组 idata[bx][si]

    8.5 指令要处理的数据有多长

    8086CPU的指令,可以处理两种尺寸的数据,byteword。在机器指令中要指明处理那种数据。
    汇编语言有以下方法处理。

    • 通过寄存器名指明要处理的数据的尺寸。
    • 用操作符X ptr指明长度,X可以是word/byte
    • 其他方法,push只进行字操作

    Tips:

    注意 inc byte ptrinc word prt的区别

    :在不进位的时候,两者没有区别,进位的时候,byte会抛弃进位

    8.6 寻址方式的综合应用

    mov si,0
    mov byte ptr [bx].10h[si],'V'
    inc si
    mov byte ptr [bx].10h[si],'A'
    inc si
    mov byte ptr [bx].10h[si],'X'

    8.7 div指令

    • 除数:有8位,和16位两种。根据8.5判定。
    • 被除数
      • 8位:默认放在AX中
      • 16位:默认放在DX和AX中,DX存高16位,AX存低16位
    • 结果
      • 8位:AL存储商,AH存储余数
      • 16位:AX存储商,DX存储余数

    格式如下

    div reg
    div byte/word ptr 内存单元
    

    至于溢出的问题
    会提示 divide error - overflow.

    至于怎么解决,要看后面的分析

    8.8 伪指令dd

    dd=Double worD,双字型数据,32位

    data segment
      db 1
      dw 1
      dd 1
    data ends
    实质:
    db=01H
    dw=0001H
    dd=00000001H

    8.9 dub

    dub是一个操作符,伪指令用于进行数据的重复

    语法

    db/dw/dd 重复次数 (重复的db/dw/dd数据)
    
  • 相关阅读:
    php实现二维码
    java课设 五子棋代码编写(团队)
    java第十四次作业
    java第十三次作业
    java第十二次作业
    java第十一次作业
    java第十周学习总结
    java第九次学习总结
    java第八周学习总结
    201521123056 《Java程序设计》第11周学习总结
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480519.html
Copyright © 2020-2023  润新知