- 1、本文档共100页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 80x86的指令系统和寻址方式1
3.3.1 数据传送类指令 3.3.2 算术运算类指令 3.3.3 位操作类指令 3.3.4 控制转移类指令 3.3.5 串操作类指令 3.3.6 处理机控制类指令 教学重点 重点掌握常用指令功能及应用 常用传送指令 加减法指令 逻辑运算和移位指令 控制转移指令 字符(串)输入输出功能调用 什么是指令系统 计算机的指令系统就是指该计算机能够执行的全部指令的集合 每种计算机都有它支持的指令集合 16位8086指令系统是Intel 80x86系列微处理器指令系统的基础 学习指令的注意事项 指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式 指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式 指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响 其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等 汇编语言指令格式 由4部分组成: [标号:]指令助记符 [目的操作数,源操作数][;注释] 3.2.1 数据传送类指令 数据传送是计算机中最基本、最重要的一种操作 传送指令也是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握 MOV XCHG XLAT PUSH POP LEA 1). 通用数据传送指令 提供方便灵活的通用传送操作 有3条指令 MOV XCHG XLAT (1). 传送指令MOV(move) 把一个字节或字的操作数从源地址传送至目的地址 例1:立即数传送 mov al,4 ;al←4,字节传送 mov cx,0ffh ;cx←00ffh,字传送 mov si,200h ;si←0200h,字传送 mov byte ptr [si],0ah ;byte ptr 说明是字节操作 mov word ptr [si+2],0bh ;word ptr 说明是字操作 例2:寄存器传送 mov ax,bx ;ax←bx,字传送 mov ah,al ;ah←al,字节传送 mov ds,ax ;ds←ax,字传送 mov [bx],al ;[bx]←al,字节传送 例3:存储器传送 mov al,[bx] mov dx,[bp] ;dx←ss:[bp] mov es,[si] ;es←ds:[si] 例4:段寄存器传送 mov [si],ds mov ax,es ;ax←es mov ds,ax ;ds←ax←es MOV指令传送功能 MOV也并非任意传送 非法传送种种 两个操作数的类型不一致 例如源操作数是字节,而目的操作数是字;或相反 两个操作数不能都是存储器 传送指令很灵活,但主存之间的直接传送却不允许 段寄存器的操作有一些限制 段寄存器属专用寄存器,对他们的操作能力有限 两个操作数的类型要一致 绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令 MOV AL,050AH ;非法指令:050Ah为字,而AL为字节 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型 对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byte ptr指示字节类型,word ptr指示字类型 两个操作数不能都是存储器 8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现 mov ax,buffer1 ;ax←buffer1(将buffer1内容送ax) mov buffer2,ax ;buffer2←ax ;这里buffer1和buffer2是两个字变量 ;实际表示直接寻址方式 要小心段寄存器的操作 不允许立即数传送给段寄存器 MOV DS,100H ;非法指令:立即数不能传送段寄存器 不允许直接改变CS值 MOV CS,[SI] ;不允许使用的指令 不允许段寄存器之间的直接数据传送 MOV DS,ES ;非法指令:不允许段寄存器间传送 (2). 交换指令XCHG(exchange) 把两个地方的数据进行互换 例5:寄存器间交换 mov ax,1234h ;ax=1234h mov bx,5678h ;bx=5678h xchg ax,bx ;ax=5678h,bx=1234h xchg ah,al ;ax=7856h 例6:寄存器与存储器交换 xchg ax,[2000h] ;字交换 ;等同于 xchg [2000h],ax xchg al,[2000h] ;字节交换 ;等同于 xchg [2000h],al (3). 换码指令XLAT(translate) 将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL 例7
文档评论(0)