汇编语言——数据处理的两个基本问题 (基于8086CPU)

本文探讨了汇编中数据在内存、寄存器及指令缓冲器中的定位,介绍了寄存器bx、bp、si、di的使用规则,以及div指令的除法操作,涉及字节和字操作,数据长度指示和隐式/显式寻址方法。同时讲解了dd伪指令和数据复制操作在定义数据时的作用。
摘要由CSDN通过智能技术生成

处理的数据在什么地方

处理的数据有多长

reg:寄存器;sreg:段寄存器
在这里插入图片描述

[…]中四个寄存器bx、bp、si、di可以单独出现,或者以四种组合出现

在这里插入图片描述

bx默认的段地址是ds,bp的段地址默认是ss

  • 只要在[…]中使用寄存器bp,而指令没有显式给出段地址,短地址就会默认在ss中。
  • 在这里插入图片描述

汇编中数据位置的表达

  • 读取、写入、运算
  • 数据的位置:内存、寄存器、指令缓冲器在这里插入图片描述
  • 汇编语言中用三个概念表示数据位置:立即数(放在cpu指令缓冲器中的位置)、寄存器、内存
  • 显式/隐式给出段地址。
  • 寻址方法:直接寻址、寄存器简介寻址、寄存器相对寻址、基质址变址寻址、相对基址变址寻址。
    在这里插入图片描述

指令要处理的数据有多长

  • byte / word
  • 通过寄存器指明要处理的数据的长度:mov ax, 1 就说明要处理的是16位,如果是 mov al, 1 那处理的就是8位。
  • 汇编中使用操作符X ptr指明内存单元的长度,X在汇编中是word或byte。否则cpu无法知道访问的是字单元还是字节单元。
    • mov word ptr ds:[0], 1 inc word ptr [bx]mov byte ptr ds:[0], 1 inc byte ptr [bx]
  • 其他方法
    • 有些指令默认访问了字单元还是字节单元
    • 例如push [1000H]就不用指明访问的是字单元还是字节单元,因为push指令只进行字操作。

用bx定位结构体,用idata定位结构体中的某一个数据项,用si定位数据项中的每一个元素。

div指令 :除法指令

  • 除数:8位/16位(AX)
  • 被除数:16位/32位(DX+AX)

div指令格式:div 除数

  • div 寄存器
  • div 内存单元
  • 示例:div byte ptr ds:[0] 注意[…]里边可以是零,但是不能是其他常数。含义:(al) = (ax)/((ds)*16+0) 的商 (ah)=(ax)/((ds)*16+0)的余数
  • 示例:div word ptr ds:[0] 注意[…]里边可以是零,但是不能是其他常数。含义:(ax) = [(dx)*10000H+(ax)]/((ds)*16+0) 的商 (dx)= [(dx)*10000H+(ax)]/(ds)*16+0)的余数

8位除数对16位被除数,被除数默认在ax中,结果也存放在ax中,al是商,ah是余数

16位除数对32位被除数,被除数默认在ax和dx中,dx放高位,dx放低位,结果商在ax中,余数在dx中

  • 例如ax = 0004; dx = 0001; bx = 0004; div bx其实就是0001 0004H / 0004H

伪指令dd

  • dd是用来定义dword型数据(double word双字)
  • 例如
data segment
db 1
dw 1
dd 1
data ends

第一个数据为01H,在data:0 处,占一个字节,
第二个数据为0001H,在data:1处,占1个字,两个字节
第三个数据为00000001H,在data:3处,占1个双字,两个字,四个字节。

dup操作符。由编译器识别处理的符号

  • 和db、dw、dd等数据定义伪指令配合使用,用来进行数据的重复
  • 例如 db 3 dup(0)等同于db 0,0,0,相当于定义了三个字节,
  • db 3 dup(0,2,3)相当于定义了九个字节db 0,1,2,0,1,2,0,1,2
  • db 3 dup(‘abc’, ‘ABC’)相当于定义了18个字节,等同于db 'abcABCabcABCabcABC'
  • 其他的db还能换成dw和dd,类上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值