• 汇编语言(王爽) 第8章数据处理的2个基本问题


    计算机进行数据处理的时候要知道2个基本问题

    1. 要处理的数据放在哪
    2. 要处理的数据多长

    刚开始定义了2个描述性符号备用

    reg和sreg

    reg 表示一个寄存器如 ax,bx,cx,dx,ah.......sp,bp,si,di

    sreg表示一个段寄存器 如 ds,ss,cs,es

    8.1 bx,si,di,bp

    1. 只有这4个寄存器可以放在[]中间和段地址ds或ss搭配进行内存单元寻址
    2. 这4个可以单独使用,也搭配使用,但只有4种组合
    3. [bp]的默认段地址是ss,其他3个是ds

    8.2 数据放在什么地方

    数据放在cpu的寄存器,内存单元,还有个什么端口不知道是个啥

    8.3 数据存放位置的表达

    前面说了数据放在哪里,但这些地方怎么表达才能让计算机看懂呢?

    1 立即数

    前面图的第3行

    在执行前放在cpu的指令缓冲器里面

    2 寄存器

    数据放在寄存器里面,如上图的第2行

    3 段地址(SA)和偏移地址(EA)组成的物理地址代表的内存单元

    上图第一行

    8.4 寻址方式

    就是定位内存单元的方法把,上图

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

    8086CPU可以处理2中长度的数据,byte和word,怎么知道要处理的数据是byte还是word(2个字节)

    1 通过寄存器名指出要处理的数据长度

    下面是字操作

    mov ax,1

    mov bx,ds:[1]

    下面是字节操作

    mov al,1

    mov bh,ds:[1]

    2 没有寄存器用x ptr 指明长度,X=byte or word

    下面是字操作

    mov word ptr ds:[1],1

    inc word ptr ds:[1]

    下面是字节操作

    mov byte ptr ds:[1]

    add byte ptr  ds:[bx],2

    8.6 这里是个寻址的练习

    8.7 div 指令

    1 除数 8 byte or 16byte

    2  除数8位,被除数16位,默认放在ax,al放商,ah放余数

    除数16位,被除数32位,被除数高16位放dx,低16位放ax,结果ax放商,dx放余数

    8.8 dd指令

    定义2个字,也就是4个字节

    8.9 dup复制指令

    用法如下图

    最后是一个大实验题,做了之后有以下

    1 db '1999',''2222'这样定义的不是2个字节,而是8个字节,每一个字符都是一个字节

  • 相关阅读:
    QSet使用及Qt自定义类型使用QHash等算法
    QQueue与QStack使用
    QHash和QMultiHash使用
    【洛谷6633】[ZJOI2020] 抽卡(多项式毒瘤题)
    【洛谷5996】[PA2014] Muzeum(模拟费用流)
    【CF1063F】String Journey(后缀自动机+线段树)
    【BZOJ3640】JC的小苹果(高斯消元)
    【洛谷6478】[NOI Online #2 提高组] 游戏(树形DP+二项式反演)
    【洛谷6730】[WC2020] 猜数游戏(数论)
    【洛谷6186】[NOI Online #1 提高组] 冒泡排序(树状数组)
  • 原文地址:https://www.cnblogs.com/wz0107/p/5380188.html
Copyright © 2020-2023  润新知