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

一、bx、si、di和bp

①在8086CPU寄存器中,只有这四个寄存器可以用在"[....]"中来表示进行内存单元的寻址。

②在[....]中,这4个寄存器可以单个出现,或者只能以4种组合出现:bx和si、bx和di、bp和si、bp和di。

③使用bx, si, di表示偏移地址时,默认段地址在ds中可以加前缀es, cs,ss。只要在[....]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中,可以加前缀ds,es,cs。

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

机器指令不关心数据的值是多少,只关心指令执行的前一刻。

将要处理的数据可以在三个地方:CPU内存、内存和端口。

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

三、汇编语言中数据位置的表达。

①立即数(idata):对于直接包含在机器指令中的数据(执行在CPU的指令缓冲器中),在汇编语言中称为:立即数。

②寄存器:指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。

③段地址(SA)和偏移地址(EA):在汇编语言中可以用[X]的格式给出EA,SA在某个段寄存器中。

四、寻址方法(略)

①直接寻址     ②寄存器间接寻址      ③寄存器相对寻址      ④基址变址寻址      ⑤相对基址变址寻址

详见书P164表格8.2举例

五、指令要处理的数据有多长(两个尺寸:byte和word)

①通过寄存器名指明要处理的数据的尺寸。

eg:al->byte,  ax->word

②在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。

eg:mov word ptr ds:[0],1            mov byte ptr ds:[0],1

③其他方法

有些指令默认了访问的是字单元还是字节单元。

eg:push [1000H]

六、寻址方式的综合应用(略)

七、div指令

div是除法指令,分以下两种情况运用:

格式:div reg

div 内存单元

eg:div byte ptr ds:[0]

(al)=(ax)/((ds)*16+0)的商

(ah)=(ax)/((ds)*16+0)的余数

补充:无符号乘法指令mul

语法格式:mul  乘数

eg:计算16*4:

八、伪指令dd

dd用于定义dword(double word,双字)型数据

区别db 1/dw 1/dd 1

第一个数据为01H,在data:0处,占一个字节;

第二个数据为0001H,在data:1处,占2个字节;

第三个数据为00000001H,在data:3处,占4个字节。

九、dup

一个操作符,由编译器识别处理的符号。和dd、db、dw等数据定义伪指令配合使用,用于数据的重复。

eg: db 3 dup(0,1,2)=db 0,1,2,0,1,2,0,1,2

db 3 dup(‘abc‘,‘ABC‘)=db‘abcABCabcABCabcABC‘

格式:db/dw/dd 重复的次数 dup (需要重复的数据)

原文地址:https://www.cnblogs.com/Yangruzhang/p/10082901.html

时间: 2024-10-11 18:13:46

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

王爽《汇编语言》第三版 第八章 数据处理的两个基本问题

引言 本章中,我们就要针对8086CPU对这两个基本问题进行讨论.虽然讨论是在8086CPU的基础上进行的,但是这两个基本问题却是普遍的,对任何一个处理器都存在. 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个寄存器(bx.bp.si.di)可以用在"[-]" 中来进行内存单元的寻址. 在"[-]&

汇编语言学习第八章-数据处理的两个基本问题

本博文系列参考自<<汇编语言>>第三版,作者:王爽 计算机CPU进行数据处理包括两个基本的问题:1.数据在何处?     2.数据有多大?  本章作为一个前面内容的总结性章节,主要来说明这两个问题.我们定义两个符号reg和sreg.其中reg为寄存器,sreg为段寄存器 reg包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di sreg包括:ds,ss,sp,es 8.1  bx. si. di和bp 1.在8086CPU只有bx,

汇编语言 第八章:数据处理的两个基本问题

1.处理的数据在哪? 2.数据有多长? 以下理由reg表示寄存器,sreg表示段寄存器 reg有:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di sreg有:cs,ds,es,ss 8.1 bx,si,di 和 bp 1) [..]中只能使用这4种寄存器,其他的不可以 2) 只能有下列使用组合,其他的不可以 [bx],[bp],[si],[di],[bx+si],[bx+di],[bp+si],[bp+di]    可以+idata 3) 只要[.

数据处理的两个基本问题(学习汇编)

1.为了描述上的简洁,在以后的课程中,将使用两个描述性的符号reg来表示一个寄存器,用sreg表示一个段寄存器. reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di; sreg的集合包括:ds,ss,cs,es. 8086CPU处理数据的两个基本问题:处理的数据存放在哪个地方? 要处理的数据有多长? 2. bx, si, di, bp:这四个寄存器,都可以放在"[...]"来进行内存单元的寻址,其他寄存器都不可以,就是这么规

数据处理的两个基本问题

计算机是进行数据处理,运算的机器,所以存在两个问题: 处理的数据的位置 处理的数据的长度 这两个问题,必须在机器指令中给出说明(有时候是明确的,有时候是隐式的),否者计算器就无法工作. 定义的描述性符号: reg(寄存器):ax,bx,cx,dx,ah,al···sp,bp,si,di sreg(段寄存器):ds,ss,cs,es bx,si,di和bp 总结: 在8086中,只有这四个寄存器可以用在[...]中进行内存寻址. 在[...]中,他们可以单个出现,或者以组合形式出现(组合中不能有其

《汇编语言》总结05 —— 数据处理的两个基本问题

(一)前述 标题所说的两个基本的问题为: 处理的数据在什么地方? 要处理的数据有多长? 这两个问题,在机器指令中必须给以明确或隐含的说明,否则计算机无法工作. 我们定义的描述性符号:reg和sreg. reg表示一个寄存器,用sreg表示一个段寄存器. reg的集合包括:ax.bx.cx.dx.ah.al.bh.bl.ch.cl.dh.dl.sp.bp.si.di: sreg的集合包括:ds.ss.cs.es. (二)bx.si.di和bp 在8086CPU中,只有这4个寄存器可以用在"[...

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

计算机进行数据处理的时候要知道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 只有这4个寄存器可以放在[]中间和段地址ds或ss搭配进行内存单元寻址 这4个可以单独使用,也搭配使用,但只有4种组合 [bp]的默认段地址是ss,其他3个是ds 8.2 数据放在什么地方

汇编语言第五到八章总结

第五章 [BX]和loop 1.内存单元间接表示: [bx] mov  dl, [0];  dl  ←  ((ds)×16 + 0) mov  bx, 0 mov  dl, [bx];  dl  ←  ((ds)×16 + (bx)) 可以使用bx间接访问内存单元.默认,段地址在ds. 2.loop指令 (1) 语法格式 loop  标号 (2) CPU执行指令过程 ① (cx) ← (cx) - 1 ② 判断cx的值是否为0. 如果(cx) ≠ 0,跳转到标号处执行: 如果(cx) = 0,

汇编语言 王爽

汇编语言 王爽 目录 汇编语言... 1 王爽... 1 第一章:基础知识 第二章:寄存器 第三章 寄存器(内存访问) 第四章 第一个程序 第六章  包含多个段的程序 第七章 更灵活定位内存的方法 第八章 数据处理的两个基本问题 第一章:基础知识 汇编语言:汇编语言是什么?为什么学习汇编语言?学习汇编语言是学习什么? 早起使用机器语言,但机器语言 晦涩难懂也难以使用,所以出现了汇编语言.即用通熟易懂的汇编指令替代全是二进制0和1的机器指令. 于是也就出现了编译器,即把汇编指令翻译成机器指令. 机