《汇编语言》(王爽)-第8章-数据处理的两个基本问题.ppt
《《汇编语言》(王爽)-第8章-数据处理的两个基本问题.ppt》由会员分享,可在线阅读,更多相关《《汇编语言》(王爽)-第8章-数据处理的两个基本问题.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本课件由汇编网()制作提供第8章 数据处理的两个基本问题n8.1 bx、si、di、bpn8.2 机器指令处理的数据所在位置n8.3 汇编语言中数据位置的表达n8.4 寻址方式n8.5 指令要处理的数据有多长?n8.6 寻址方式的综合应用n8.7 div 指令n8.8 伪指令 ddn8.9 dup本课件由汇编网()制作提供引言n本章对前面的所有内容是具有总结性的。我们知道,计算机是进行数据处理、运算的机器,那么有两个基本的问题就包含在其中:(1)处理的数据在什么地方?(2)要处理的数据有多长?这两个问题,在机器指令中必须给以明确或隐含的说明,否则计算机就无法工作。 本课件由汇编网()制作提供引
2、言n本章中,我们就要针对8086CPU对这两个基本问题进行讨论。虽然讨论是在8086CPU的基础上进行的,但是这两个基本问题却是普遍的,对任何一个处理器都存在。n我们定义的描述性符号:reg和sreg 本课件由汇编网()制作提供引言n为了描述上的简洁,在以后的课程中,我们将使用两个描述性的符号 reg来表示一个寄存器,用sreg表示一个段寄存器。nreg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di;nsreg的集合包括:ds、ss、cs、es。本课件由汇编网()制作提供8.1 bx、si、di、bpn前三个寄存器我们己经用过了,现在
3、我们进行一下总结。n(1)在8086CPU 中,只有这4个寄存器(bx、bp、si、di)可以用在“” 中来进行内存单元的寻址。 n正确的指令n错误的指令本课件由汇编网()制作提供8.1 bx、si、di、bpn正确的指令 mov ax,bx mov ax,bx+si mov ax,bx+di mov ax,bp mov ax,bp+si mov ax,bp+di本课件由汇编网()制作提供8.1 bx、si、di、bpn错误的指令 mov ax,cx mov ax,ax mov ax,dx mov ax,ds本课件由汇编网()制作提供8.1 bx、si、di、bpn(2)在“” 中,这4个寄存
4、器(bx、bp、si、di)可以单个出现,或只能以四种组合出现:nbx和si、bx和di、bp和si、bp和din正确的指令n错误的指令本课件由汇编网()制作提供8.1 bx、si、di、bpn正确的指令 mov ax,bx mov ax,si mov ax,di mov ax,bp mov ax,bx+si mov ax,bx+di mov ax,bp+si mov ax,bp+di mov ax,bx+si+idata mov ax,bx+di+idata mov ax,bp+si+idata mov ax,bp+di+idata本课件由汇编网()制作提供8.1 bx、si、di、bpn错
5、误的指令 mov ax,bx+bp mov ax,si+di本课件由汇编网()制作提供8.1 bx、si、di、bpn(3)只要在中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中。比如: nmov ax,bp 含义: (ax)=(ss)*16+(bp)nmov ax,bp+idata 含义:(ax)=(ss)*16+(bp)+idata)nmov ax,bp+si 含义:(ax)=(ss)*16+(bp)+(si)nmov ax,bp+si+idata 含义:(ax)=(ss)*16+(bp)+(si)+idata)本课件由汇编网()制作提供8.2 机器指令处理的数据所在位
6、置n绝大部分机器指令都是进行数据处理的指令,处理大致可分为三类: 读取、写入、运算n在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。本课件由汇编网()制作提供8.2 机器指令处理的数据所在位置n指令在执行前,所要处理的数据可以在三个地方: CPU内部、内存、端口 (端口我们将在后面的课程中进行讨论) 指令举例本课件由汇编网()制作提供8.2 机器指令处理的数据所在位置n指令举例:本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n在汇编语言中如何表达数据的位置?n汇编语言中用三个概念来表达数据的位置。 n1、立即数(idata)n2、寄存
7、器n3、段地址(SA)和偏移地址(EA) 本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n1、立即数(idata) 对于直接包含在机器指令中的数据(执行前在cPu 的指令缓冲器中),在汇编语言中称为:立即数(idata ) ,在汇编指令中直接给出。例如: mov ax,1 add bx,2000h or bx,00010000b mov al,a 本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n1、立即数(idata) mov ax,1 对应机器码: B80100 执行结果:(ax) = 1 本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n2、寄存器 指令要
8、处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。例如: mov ax,bx mov ds,ax push bx mov ds:0,bx push ds mov ss,ax mov sp,ax本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n2、寄存器 mov ax,bx 对应机器码:89D8 执行结果:(ax) = (bx)本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n3、段地址(SA)和偏移地址(EA) 指令要处理的数据在内存中,在汇编指令中可用X的格式给出EA,SA在某个段寄存器中。n存放段地址的寄存器可以是默认的。n示例n存放段地址的寄存器也可以显性的给出。
9、n示例本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n存放段地址的寄存器是默认的n示例: mov ax,0 mov ax,bx mov ax,bx+8 mov ax,bx+si mov ax,bx+si+8 段地址默认在ds中本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n存放段地址的寄存器是默认的n示例(续): mov ax,bp mov ax,bp+8 mov ax,bp+si mov ax,bp+si+8 段地址默认在ss中本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n显性的给出存放段地址的寄存器n示例mov ax,ds:bp 含义:(ax)=(ds
10、)*16+(bp)mov ax,es:bx 含义:(ax)=(es)*16+(bx)mov ax,ss:bx+si 含义:(ax)=(ss)*16+(bx)+(si)mov ax,cs:bx+si+8 含义:(ax)=(cs)*16+(bx)+(si)+8)本课件由汇编网()制作提供8.3 汇编语言中数据位置的表达n3、段地址(SA)和偏移地址(EA) mov ax,bx 对应机器码:8B07 执行结果: (ax) = ( (ds)16+(bx) )本课件由汇编网()制作提供8.4 寻址方式n当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般被
11、称为寻址方式。n8086CPU有多种寻址方式,我们在前面的课程中都已经用到了,这里我们进行一下总结。本课件由汇编网()制作提供8.4 寻址方式本课件由汇编网()制作提供8.4 寻址方式n寻址方式n演示1、直接寻址n演示2、寄存器间接寻址n演示3、寄存器相对寻址n演示4、基址变址寻址n演示5、相对基址变址寻址本课件由汇编网()制作提供本课件由汇编网()制作提供本课件由汇编网()制作提供本课件由汇编网()制作提供本课件由汇编网()制作提供本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n8086CPU的指令,可以处理两种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是
12、字操作还是字节操作。本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n对于这个问题,汇编语言中用以下方法处理。n(1)通过寄存器名指明要处理的数据的尺寸。n(2)在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。n(3)其他方法本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n下面的指令中,寄存器指明了指令进行的是字操作:n mov ax,1n mov bx,ds:0n mov ds,axn mov ds:0,axn inc axn add ax,1000本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n下面
13、的指令中,寄存器指明了指令进行的是字节操作:n mov al,1n mov al,bln mov al,ds:0n mov ds:0,aln inc aln add al,100本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n下面的指令中,用word ptr指明了指令访问的内存单元是一个字单元:n mov word ptr ds:0,1n inc word ptr bxn inc word ptr ds:0n add word ptr bx,2本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n下面的指令中,用byte ptr指明了指令访问的内存单元是一个字节单元:n mo
14、v byte ptr ds:0,1n inc byte ptr bxn inc byte ptr ds:0n add byte ptr bx,2本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n在没有寄存器参与的内存单元访问指令中,用word ptr或byte ptr显性地指明所要访问的内存单元的长度是很必要的。n否则,CPU无法得知所要访问的单元是字单元,还是字节单元。本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n假设我们用Debug查看内存的结果如下: 2000:1000 FF FF FF FF FF FF 那么指令: mov ax,2000H mov ds,ax
15、mov byte ptr 1000H,1 将使内存中的内容变为: 2000:1000 01 FF FF FF FF FF本课件由汇编网()制作提供8.5 指令要处理的数据有多长?而指令: mov ax,2000H mov ds,ax mov word ptr 1000H,1将使内存中的内容变为:2000:1000 01 00 FF FF FF FF为什么?本课件由汇编网()制作提供8.5 指令要处理的数据有多长?n这是因为nmov byte ptr 1000H,1访问的是地址为 ds:1000H的字节单元,修改的是 ds:1000H单元的内容;n而mov word ptr 1000H,1访问的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 王爽 数据处理 两个 基本 问题
限制150内