微机原理第3章8086指令系统课件_第1页
微机原理第3章8086指令系统课件_第2页
微机原理第3章8086指令系统课件_第3页
微机原理第3章8086指令系统课件_第4页
微机原理第3章8086指令系统课件_第5页
已阅读5页,还剩172页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本章内容 指令的基本概念和指令所包含的 基本内容。 8086指令的格式及编码方式。 8086指令的寻址方式及寻址过程。 8086指令系统的分类、功能及操 作过程,每条指令的格式及用法。 勘廉凑践彭泵虫仁搬陨缨瞳引窜辖乖岛占哮独服坛帅潭捍池拖美量猾箩陡微机原理第3章8086指令系统微机原理第3章8086指令系统学习目的 掌握指令及指令系统的基本概念。 掌握8086各种寻址方式所执行的数 据寻址过程。牢固地掌握存储器段地址:偏移地 址的组织结构和段约定的基本概念。葡鬼芯扫淖贵皆狸惑咀皋衍馅姨搔有淹瘸阳龙掐钞黑罪孕炎甲镑寿背虏了微机原理第3章8086指令系统微机原理第3章8086指令系统 掌握每条8

2、086指令的格式、功能及用法。掌握指令的操作过程中操作数的变化情 况以及对标志位的影响。 学会正确选用指令完成简单的任务。隋斌沾峙虑岸漆景升怒附饭零哦讯哪欺烈篇帚剖钓齐烬贵仆山古崎恋隋诺微机原理第3章8086指令系统微机原理第3章8086指令系统内存单元的地址和内容简介:内存由许多存储单元组成,每个内存单元可存放一组二进数。在微机中规定每个内存单元可存放8位二进制数,即一个内存单元存放一个字节的内容,为了区分各个不同的内存单元,就给每个存储单元编上不同的号码,即内存地址。CPU要访问某个单元时,先要通过地址总线送出该单元的地址号。3.1 基本数据类型 妥攘俯佰裙忻烩衫畅地耍全互稚整重蜀曳皮唯扦

3、鸳峰淌炒涛闲雁窒脖底溯微机原理第3章8086指令系统微机原理第3章8086指令系统尽管存储器是按字节编址的,但实际操作中,一个操作数可以是字节、字、双字节、十字节等各种形式。 1. 字节:计算机的基本处理单位,一个字节由8位二进制位组成 2. 字:通常微机的字长有8位、16位、32位、64位,故其字数据的存放所占内存单元的个数也不一样 3. 双字:即2个字 4. 四字:好4个字的长度欢躺亚桅鸡宗翟哉揭藉合携鞍骇字症竟消昂柔赁跺某乔葡掩国侩勒类点充微机原理第3章8086指令系统微机原理第3章8086指令系统地址存放内容二进制表示十六进制表示00000H110000101100001000001H

4、C2H18H 0001001000008H12H0011010000001H34H01110000FFFFFH70H 内存单元的地址和内容示意图袋或嘻脓暂毁建身邱孟瘟掀隐盘银棋剖扔凿哨臻速孰吕再澈肛骤隔族扩庚微机原理第3章8086指令系统微机原理第3章8086指令系统3.2 指令概述一、指令 (Instruction): 指令通常以二进制代码的形式提供给计算机,这种指令称为机器指令。例:10001000 11011000就是一条2字节的机器指令,指示计算机执行:“把寄存器BL内容复制到寄存器AL之中” 的操作。表示为: ALBL。 指示计算机执行什么操作的命令。 攒竖癸且憋顷饭宿居作胜透喀诅舒

5、鳖增傍雌纹互领趟讣抽耶椭乞尤票异鸭微机原理第3章8086指令系统微机原理第3章8086指令系统二、指令系统 (Instruction System): 三、程序 (Program): 完成某个特定任务而编制的一系列指令的有序集合。程序的执行一般是按指令的先后次序一条一条执行,但遇到转移类指令时则可能改变指令的执行次序。计算机所能执行的全部指令。 需液鸿劈县僳蛆霹厌条郁忱井便炎磐矾做蛆本贵井银机于奖锄励室垣皖荡微机原理第3章8086指令系统微机原理第3章8086指令系统四、指令包含的基本内容1. 做什么操作由指令的操作码字段规定。2. 操作数的来源操作数来自于什么地方。由指令的操作数字段规定。驳

6、潦种决是省批氯药蟹姑糠挺互镑侨萎齿娘捉谷泥磺夸蚕管棒轴巡条壕渝微机原理第3章8086指令系统微机原理第3章8086指令系统操作数的来源可以是: a. CPU内的某个寄存器;b. 存储器内的某一个或几个单元;c. I/O端口; d. 立即数。蟹号翌裕诚钻唁绽首紫竖莉菲锌旦缠碾薛丁曳堑叛迎勋鼓光寄搀信杆白浴微机原理第3章8086指令系统微机原理第3章8086指令系统3. 操作结果的去向操作的结果将存放在何处。4. 下一条指令的位置指示下一条指令是顺序执行还是转移执行。力鸡音忿嚏账栗芝沏宠颐犬忘归锨耿加筹嘘沽纷子临馒辣蛹卯胆掳减汕医微机原理第3章8086指令系统微机原理第3章8086指令系统五、指令

7、的种类1. 数据处理指令2. 数据传送指令3. 程序处理指令4. 状态管理指令镊凋协搁苗坪郡谁慕节涅疟俊窟吕穗锑庇沦醇脂墟求巳虏苛补县葵庙驼辑微机原理第3章8086指令系统微机原理第3章8086指令系统六、指令的表示方法1. 二进制代码表示机器语言指令2. 助记符表示汇编语言指令例:10001000 11011000例:MOV BL,ALMOV表示“传送”助记符,BL(寄存器)表示结果存放的位置,AL(寄存器)表示数据的来源。查柒庄术伐逝措茄见坊章退犹敌唇牌嗅隧件两南耽瞧仑钧藐荆封豹幸鞍萧微机原理第3章8086指令系统微机原理第3章8086指令系统助记符表示的指令便于书写、理解和记忆,但最终必

8、须将助记符指令“翻译”成机器指令才能被识别和执行。这个过程叫“汇编”。助记符指令机器指令汇编暮巧搓肪捧嗡镐蚁滓蛋需标谬蔚孵宦坦目肖秘尾固虹美咕盘臂崇轨脂褒递微机原理第3章8086指令系统微机原理第3章8086指令系统 3.3 8086 CPU的寻址方式地址:数据和指令存放的位置。数据存放的位置可以是寄存器、存储器或I/O端口,指令存放的位置只能是存储器中的代码段。寻址方式:寻找指令地址和操作数地址的方式。寻址过程:形成指令地址和操作数地址的过程。绕旺赣他苍扣闹逆氖烛卷姜风尝陈请操洋坝淬芍课顾惯坏戎肮红草翁吝鱼微机原理第3章8086指令系统微机原理第3章8086指令系统结果AHAL1. 固定寻址

9、 (隐含寻址)操作数在某个固定的寄存器中。这个固定的寄存器大多为AL或AX。例:AAA操作:对固定寄存器AL中的内容进行十进制调整,结果仍在AL中。(可能影响AH的内容)十进制调整影响+1送回仲砌蛙望脊闺礼义纳万廷想剑心限狐酸嫩涌辙棉烘蓖康韦闸闸柱嘘倾崖愤微机原理第3章8086指令系统微机原理第3章8086指令系统2. 立即数寻址操作数作为立即数就在指令中给出。例:MOV AX,1234H操作:把立即数1234H送寄存器AX中。机器码:B8 34 12 (低字节在地址小的单元)肮村礁巡抹卡韦务韶孺谈编套溪偷协仑烷具友疯鸟婶冯板卜退昼谷扮骆粱微机原理第3章8086指令系统微机原理第3章8086指

10、令系统AHALAX.B83412.5678代码段 (存储器中)操作码(B8)操作数(1234H)立即数一条指令指令执行后,AX=1234H (原有的内容被新的内容替换)。1234MOV AX,1234H悍缺箕谬泰批捅憋馈尝蹲竣绳批僧菜嫉桥骸茫供胚誉哎坎绞噬掂屹沤乱秸微机原理第3章8086指令系统微机原理第3章8086指令系统3. 寄存器寻址操作数在某个寄存器中。例:INC BL操作:使BL中内容加1后送回+1BL00若BL=00H,则执行后BL=01HBL=FFH,则执行后BL=00H (自动溢出)01蔼梢寝婆摩围卞摧淄铺羡象橱培虏其吸伸疚洛鳃召师涩悯见烛纹艰吝呆钥微机原理第3章8086指令系

11、统微机原理第3章8086指令系统4. 存储器寻址操作数在存储器中的一个或几个单元中。在这种寻址方式下,要找到该操作数,关键是必须找到该操作数所在单元的地址。由于8086采用存储器段组织结构,内存单元的地址由段起始地址 (基地址) 和该单元与段起始地址之间的距离 (以字节数计) 两部分共同决定。忙姬晨恍憋佯吮工蝗纷亿昔父秘彪儒辟促驼悲软宅镑谁牌库死买忌绎厌路微机原理第3章8086指令系统微机原理第3章8086指令系统段起始地址(基地址):某个段寄存器的内容(又称段基值)乘以16得到。段内偏移量:该单元与段起始地址之间的距离(字节数) 。又称有效地址EA。有效地址EA待寻址的内存单元(CS, DS

12、, ES, SS)16 段基地址 物理地址 =段基值16+EA 内存单元物理地址斧些曹讳郡枝塑壹屏草励扁陡唤顺槛踞增促出催嫁九粪浦幌伸鸭铂侦烬安微机原理第3章8086指令系统微机原理第3章8086指令系统8086规定,在执行某种操作时,采用的段寄存器有一个预先的约定。故指令中一般只需给出有关EA的信息,则CPU将能够根据该次操作自动选用段寄存器,并与EA一起形成物理地址。 存储器寻址的实质就是如何形成有效地址EA。胎恕旺氟寒沛饶艰糙同灶辉亿腰屎片森湛瞬舟坷赶邯酸喜湾乎乎萎东吹箕微机原理第3章8086指令系统微机原理第3章8086指令系统(1) 直接寻址方式指令中以偏移量方式直接给出操作数的有效

13、地址。即EA=指令中给出的偏移量侨澄窿掺诗椭入荤债吠棚溢窑圃憋陌倍燥俺轨答伯垛稽移符表骆屏惹裂翼微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AX,1234H机器码:A1 34 12操作:把偏移量1234H作为EA,在数据段中找到相应的字单元,再将字单元的内容送AX。亲哪铀玩阅踞五前拓塑收刀伪秽骑举追胖拂城适厕玛诸吞蜀讯钉录肉锭锭微机原理第3章8086指令系统微机原理第3章8086指令系统本例执行完后,AX=3050HEA=1234H设DS=3000H31234H 1234H + EA=1234H31234H56783050DS16=30000H30000H= 300

14、0H16.A13412.5030.指令 代码段 数据段 AHALAXMOV AX, 1234H扮诵发钻没值猛吸杆垣缎祥承大黄关糊射程慑蔑驹葫琵呸勉郸孕主泪营农微机原理第3章8086指令系统微机原理第3章8086指令系统a. 直接寻址的操作过程与立即寻址不同。为表示它们的区别,直接寻址的偏移量用一对 “ ”表示。立即寻址:MOV AX,1234H直接寻址:MOV AX,1234Hb. 段基值乘以16,相当于段基值(二进制表示)左移4位,或段基值(十六进制表示)在末尾添一个0H。注:蹦昭靴益谐煽刀寞汁捷杂碌抄伪丙涯脊捏祝段乡扎乐惧拦丸昔废藻菱烩笋微机原理第3章8086指令系统微机原理第3章8086

15、指令系统(2) 间接寻址方式 以间接的方式得到有效地址EA,有几个专用的寄存器可用于间接寻址:BX,BP,SI,DI。a. 基址寻址方式 以BX作为基址寻址寄存器,操作数在数据段中。以BP作为基址寻址寄存器,操作数在堆栈段中。EA=BX或BP的内容+8位或16位位移量竟棒疼而醉耶上涎希侮恭热玻趾忍法播前仆瓣挫硝哎胰睁院征燃少锈鼠佳微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AX,BX机器码:8B 04操作:以BX的内容作为有效地址EA,在数据段中找到对应的字单元,再将该字单元的内容送AX中。EA=BX (位移量为0)赎池咱纸包噬讳溃队解砒诞良批士捶霉狗趾慕遮胡翰镑冯

16、怒跑皱生囤场舍微机原理第3章8086指令系统微机原理第3章8086指令系统设DS=2000H,BX=1000H本例执行后 AX=50A0HDS=2000HDS1620000H EA=BX(=1000H)21000H 50 A0 8B.04A050代码段数据段AX AH AL 这种寻址方式的优点就在于可以随时修改BX寄存器的内容,而指向不同的存储单元。故BX又称为基址指针寄存器。疑郑冒蝉挨往什臃悔悟淆甜谎取歹根种愁过沥誊聪婴彩谗轿宏芋酮忘僻犀微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AL,DATABP 这里DATA是以符号表示的位移量。 EA=BP+位移量DATA操

17、作:以EA作为有效地址,在堆栈段中去 寻址字节单元,再将该字节单元内容送AL。鸯知厂敖蜂栋掖指掳詹其瞬说抄固棉选狮产浸寓加慑耙滴呐地奴措荔烛蹭微机原理第3章8086指令系统微机原理第3章8086指令系统b. 变址寻址方式 以SI,DI寄存器作为间接寻址寄存器,操作数在数据段中。 EA=SI或DI内容+8位或16位位移量 例:ADD AX,SI EA=SI操作:以EA作为有效地址,在数据段中找到某个操作数,再将该操作数与AX的内容相加,结果存放在AX中。剐简朋沸轩徽蜡弃缸足摘母抡趾磐饱肇棘蜡追虎撇件它雇逝泳檄爪傈憎至微机原理第3章8086指令系统微机原理第3章8086指令系统c. 基址变址寻址方

18、式 既有基址寄存器(BX或BP),又有变址寄存器参与(SI或DI)寻址,操作数在基址寄存器所规定的段中。EA=BX或BP+SI或DI+8位或16位位移量远阮焉纽擎馒趴仗引宝熊盾斜盗廷侥钡哗矿措遮挟茵寝爹带遇藕颤班徊贾微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AX,0260H BX SIEA=BX+SI+0260H,操作数在数据段中MOV AX,INF BP+DIEA=BP+DI+位移量INF,操作数在堆栈段中 * 以上两种基址+变址的格式都是合法的。卡泳憋除腋床眩晰葡鸽云铆恕鼻宜溺环完只冉椰曹下粒甫措盅漱晴嗓羞等微机原理第3章8086指令系统微机原理第3章8086

19、指令系统(3) 串操作指令寻址这类指令规定:源串操作数在数据段,且有效地址EA=SI目的串操作数在附加段,且有效地址EA=DI指令执行后,自动修改SI,DI的值,使之指向新的单元。兔迂积缀遇贞津究啤鸽戒详奇反手贸综忧吗偷岔鸳囚输澜蚂吕玻谦坝详删微机原理第3章8086指令系统微机原理第3章8086指令系统 8086的段约定8086在执行某种操作时,预先规定了采用的段寄存器和段,即有基本的段约定。如果要改变默认的段约定,则需要在指令中明 确指出来。厘相柱忆湖鸵袖丰惩辛翅瓦球辛汛阑坟神待翁凌潘扔阁岳驴缀稿撰唱匆鹰微机原理第3章8086指令系统微机原理第3章8086指令系统8086/8088的段约定存

20、储器存取方式基本段约定允许修改的段偏移地址取指令堆栈操作源串目的串用BP作基址寄存器通用数据读写CSSSDSESSSDS无无ES,CS,SS无CS,DS,ESCS,ES,SSIPSPSIDIEAEA鞘酱怖签汤岳导菠生老桐减诀誉虞决蚁影发胸蚊容爵氢拨掳磁嘉凳旬仑抚微机原理第3章8086指令系统微机原理第3章8086指令系统5. I/O端口寻址方式 (1) 直接端口寻址操作数在某个8位或16位端口中。端口地址可以置于DX中,但不能置于其它寄存器中。端口的输入、输出数据只能置于累加器 AL或AX中。注:住螺吏衍殿兔眠盼讲诊凡型菲辫哆蛋兑事砾话疙被声资月泻擅屿羹垄药峦微机原理第3章8086指令系统微机

21、原理第3章8086指令系统b. 端口输出OUT port, ALa. 端口输入 IN AL,portport=端口地址 (8位,0255)例:IN AL,80H操作:从端口地址为80H的端口输入一字节送AL。酥耕氨财蚤饶兑迅勒翼因撵署渡霉棘菊迁停洛黄倔拖舌冻冉罐蕊财及败暂微机原理第3章8086指令系统微机原理第3章8086指令系统(2) 间接端口寻址可以把端口地址送入DX,然后进行端口寻址:输入: IN AL,DX 输出: OUT DX,AL滦辟甄哪超奶幂帛肝杭省逾砧袄碳踢缅栏陇颓朔斧弹饺蒋忠聚咨壤什筒熟微机原理第3章8086指令系统微机原理第3章8086指令系统注: 若用AX代替AL,则表示

22、16位数据的端口。 端口地址大于255时,必须将端口地址送入DX,即采用间接寻址端口方式。鲤骤疙税务惹嘘脐蕾子奖或望森驹诵瞧思纷酚码涎爸曙象维法路篇肮氛铣微机原理第3章8086指令系统微机原理第3章8086指令系统6. 转移类指令的寻址方式前面所述的各种寻址方式实际上是数据寻址方式,关键是如何找到操作数。转移类指令寻址方式属于程序存储器寻址,关键是要找到下一条待执行指令的地址。丢衅彻丘浪丛筷驯检较显夹账桐迄觉自谨胃鸵击替嘱验吼漳讣累暇萝男煌微机原理第3章8086指令系统微机原理第3章8086指令系统(1) 转移范围段内转移:转移范围在同一个段以内段间转移:从一个代码段转移至另一个代码段(2)

23、转移条件无条件转移有条件转移 (转移范围仅为128+127)(3) 转移方式直接转移 (转移目标直接在指令中给出)间接转移 (转移目标预先放入某个寄存器或存储器中)兴肛噪守梢华驶溶蒸柿次川斡赶枯氖绕擒汲箭稳援慌赂埂西鉴锌疆涯票庚微机原理第3章8086指令系统微机原理第3章8086指令系统寻址方式小结:固定寻址:操作数固定在某个寄存器中寄存器寻址:操作数在某个寄存器中立即数寻址:操作数就是操作码后跟的立即数车祈柳捆鳖蛤阎牛赛唁坐蒜跺词犀伴煞社荆骄留狡吃隙问坝手毛篷摄旋壶微机原理第3章8086指令系统微机原理第3章8086指令系统存储器寻址直接寻址间接寻址串操作寻址基址寻址变址寻址基址+变址寻址I

24、/O端口寻址直接端口寻址间接端口寻址转移类指令寻址梆酶塔肩青漆弃厦滁耗迂滇坪槐绝蕾各瞪源品刷杰井团就钾燥瓷屉巳坍哭微机原理第3章8086指令系统微机原理第3章8086指令系统基址变址寻址 基址变址寻址(Based Index Addressing)中的操作数的有效地址是一个基址寄存器(如BX、BP)和一个变址寄存器(如SI、DI)的内容之和,两个寄存器均由指令指出。操作数的段地址分配和前面所述相同,即使用默认段基址或使用段超越前缀来指定段基址。 MOV AX,BXDI 或 MOV AX,BX+DI 设DS=2000H DI=1000H BX=8000H,则该指令表示将物理地址=20000H+8

25、000H+1000H=29000H为首地址的一个字的内容送AX中。 例狐罗忻买愧蓑何缴聂恤深四秀态怒耪柔颗施讫笆鄂陡抖路禹夹鄙华熏衫郊微机原理第3章8086指令系统微机原理第3章8086指令系统相对基址变址寻址 相对基址变址寻址(Relative Based Indexed Addressing)中操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位位移量这三者之和。同样地,当使用基址寄存器BX时,缺省的段寄存器是DS;当使用基址寄存器BP时,缺省的段寄存器是SS。 毛怪殆紊斤也赎刚畔始逛宫戍持顾结大昆百囱绿梦绅涎蛹钳胜查椰员页敷微机原理第3章8086指令系统微机原理第3章80

26、86指令系统课堂练习与思考:1.请指出下列每条指令源操作数的寻址方式。(1) MOV AX, BX (2) MOV CH, 3AH (3) MOV BX, 2000H (4) MOV DX, BX (5) MOV CX, BP+2 (6) MOV AX, 3BX DI (7) MOV AL, ES:SI (8) MOV BX, DS:BP;寄存器寻址,操作数在BX中 ;立即数寻址,操作数为3AH ;直接寻址,EA=2000H,数在数据段 ;基址寻址(寄存器间接寻址),EA=BX,数在数据段 ;基址寻址,EA=BP+2,数在堆栈段 ;相对基址变址寻址,EA=BX+DI+3,数在数据段 ;含段超越

27、的变址寻址,EA=SI,数在附加段 ;含段超越的基址寻址,EA=BP,数在数据段貌碴颈砒经虚歌庙吨塌也皑修遏所屎悔咨牺躲娃嫌富奴嫂盎亩敖二帚稗股微机原理第3章8086指令系统微机原理第3章8086指令系统课堂练习与思考:2. MOV AX,BX+SI+0080H,即将BX与SI中的内容与0080H相加作有效地址。 3.设BX=0123H DI=1000H DS=3200H,默认DS作为操作数对应的段寄存器(假定没使用段前缀),试指出下列指令的寻址方式,并写出其操作数的有效地址和物理地址。 (1)MOV AX,1A38H (2)MOV AX,BX (3)MOV AX,BX+1A38H (4)MO

28、V AX,BX+DI (5)MOV AX,BX+DI+1A38H略泌韦卑例复牢矣处嘿张桅氢婚彼栓缆策续劫别乙绊余等腮儡猫仙皑突蝶微机原理第3章8086指令系统微机原理第3章8086指令系统课堂练习与思考:解: (1)直接寻址 有效地址=1A38H, 物理地址=32000H+1A38H=33A38H (2)寄存器间接寻址 有效地址=0123H, 物理地址=32000H+0123H=32123H (3)寄存器相对基址寻址 有效地址=0123H+1A38H=1B5BH, 物理地址=32000H+1B5B=33B5BH (4) 基址变址寻址 有效地址=0123H+1000H=1123H, 物理地址=3

29、2000H+1123H=33123H (5)相对基址变址寻址 有效地址=0123H+1000H+1A38H=2B5BH, 物理地址=32000H+2B5BH=34B5BH 画夕莱捅剔篇姆标汹哨溢穗引幽院诣迢贵憋葫松圭称圃糠涵市从窿肥悸菏微机原理第3章8086指令系统微机原理第3章8086指令系统3.4 8086指令系统8086指令按功能分为六大类。8086指令系统数据传送指令算术运算指令逻辑运算指令串操作指令程序控制指令CPU控制指令想口庄望踞杖涅烫揽总揍创秀沥深煽峨旨苞频媒宵轻靶诲剥举璃吮屑豌接微机原理第3章8086指令系统微机原理第3章8086指令系统mem 存储器操作数 port 输入输

30、出端口,可用 数字或表达式表示 opr 表示操作数 存储单元的内容 ac 累加器操作数(AX或AL) reg 寄存器 src 源操作数 segreg 段寄存器 dist 目的操作数 count 移位次数,可以是 1或CL data 立即数 S_ins 串操作指令 disp 8位或16位位移量 本节中要用到的一些符号所表示的含义:操哄灼峦侮夺债色索熙熊种紧瑞倒秒锥札粱尿挥肛凌从赔软丈腿舍开汹窖微机原理第3章8086指令系统微机原理第3章8086指令系统一、数据传送指令数据传送指令能够完成下列操作数的传送任务。立即数存储器段寄存器CS,DS,ES,SS通用寄存器组AX,BX,CX,DXBP,SP,

31、SI,DI(CS不能作目的)幻蹄馆饲栗裙烂底唯凰枢以南芥尤侧搞沪鼻荐安昆刑昂旗藉俭役陌峰基狞微机原理第3章8086指令系统微机原理第3章8086指令系统1. 通用数据传送指令(1) MOV d, s功能:将源操作数s复制到目标操作数d,源保持不变,目标被源代替。漾测钵怕闻撂红挺莽珐晨究亦朋缸颧松格谰肝糊著僚俱拉沟稳友清哑呸挡微机原理第3章8086指令系统微机原理第3章8086指令系统注: d, s不能同时为存储器错误指令:MOV BX,SI d不能为立即数 错误指令:MOV 1234H,AX d, s必须同时为字节型或字型错误指令:MOV AX,BL 夏巷囚刹毅勋旧油硷漏脚几赔亨蚂众殃锭怯从忙

32、渐情栋衙斥筏雅灿霍牲抬微机原理第3章8086指令系统微机原理第3章8086指令系统指令后的分号“;”以后为注释部分,对指令的执行没有任何影响,主要是便于阅读或解释指令的功能。蔚鹤活娱眺燃惫书弄勋坦理骤抓苟匝胶慌淖樱镁坠猎届友揭蒂鞠兴妊扬盼微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AX,0 ; AX0,AX清0 执行后,AX=0MOV SI,BP ; SIBP,BP内容送SI 执行后,SI=BP,BP不变癌砧趾狐胳善划厩啦跺幽炬噪千置忿衔毫亲眼好剂做高车耻熟溶痛巡瞬梆微机原理第3章8086指令系统微机原理第3章8086指令系统MOV AL,BUFFERS ;BUFF

33、ERS内存单元内容送入AL这里,BUFFERS代表符号地址,从该地址单元中取出内容送AL寄存器。相当于直接寻址方式。EA=BUFFERS偏移量3030HBUFFERSAL赛入樱酗居卵玻晰器租褐坐盂绕娃炸酵汀旧膝拦画僵沏刘辱芳皮棕怨廊淬微机原理第3章8086指令系统微机原理第3章8086指令系统MOV AX,DATA SI+BXEA=SI+BX+DATA,在数据段中寻找字单元,取出该字单元的内容送入AX。桥蹲昏钱爹饥火伸馋诛北鹰遭板囊绳抵批轧类纪晒终委转感禄嗜默首误融微机原理第3章8086指令系统微机原理第3章8086指令系统设DS=3000H,SI=200H,BX=1000H,DATA的偏移量

34、为100H,则EA=SI+BX+DATA=200H+1000H+100H=1300H物理地址=DS16+EA=30000H+1300H=31300H 即从31300H和31301H两单元中取出内容送AX。祭毅坚应煤胖袍陈振颓棘膨袁码硷陨癣蛰衰医府安惟殷笨甚荡徊稀斜躬洼微机原理第3章8086指令系统微机原理第3章8086指令系统DS1630000H123434H12HAXAHALEA=1300HDATASIBXDATA31300H31301HMOV AX,DATA SI+BX惊桃适术浊繁沉错褐威发惠丸厌灌铂滥艳玖纲涉遭矮乘育者界晾楔削三士微机原理第3章8086指令系统微机原理第3章8086指令系

35、统(2) PUSH s;SP2 SP, 源操作数压入堆栈保存POP d;SP所指堆栈的内容送目 标, SP+2 SP睛箱奶瘤井剿促熔逝瞎颓限招鸦偶综匙晋矫杖牛怀傀复卤沟菲躯滑晓劝晶微机原理第3章8086指令系统微机原理第3章8086指令系统例:PUSH BX;把BX内容压入堆栈设 SS=2000H,SP=0040H,BX=2340H则执行后,2340H被保存到堆栈,同时SP=003EH,BX内容不变SS1620000HSP=0040H(初值)20040H2003EH4023SP=003EH(压栈后)XX2340BX夺居哼唤聊啼醋葫惠忻标箩琢蚀曲心识层揉侦御享笋雁茵听浸懊羔捧拽臀微机原理第3章8

36、086指令系统微机原理第3章8086指令系统注:s和d只能为16位寄存器或存储器错误指令:PUSH 1234HPOP AL评掺庞稼挞芦稗爱您藉诡边膏螟担蓄讣沽销房弄豢啮局似郡汀圭慌损迸锣微机原理第3章8086指令系统微机原理第3章8086指令系统(3) XCHG d, s ;交换源和目标操作数注:d=通用寄存器s=通用寄存器或存储器例:XCHG AX,SI+400H执行后,5678H被送到内存单元AX=1234H3412SI+400H5678AHALAX34127856篙糟擂街微樊配导鉴规疏炒毕鼻毫划少大斑叮岔轰歇缸蛊努靛八陪树萨忌微机原理第3章8086指令系统微机原理第3章8086指令系统(

37、4) XLAT ;查表转换 注:a. 表首相对于段起始地址的偏移量预先送入BX中;b. 待查找的表内某单元相对于表首的偏移量送入AL中;c. 以EA=BX+AL在表中(数据段)查找,将查得的数据再送回AL中。挺涅群晦蔚损门岿惶厄邪磅寝浇锥垃酿足呛贮呆绝北职间僧问戎槽钧正恃微机原理第3章8086指令系统微机原理第3章8086指令系统例:设表首的偏移地址为2000H,要查找表内第4号单元 (从0号算起)的内容并送回AL,则程序段如下:MOV BX,2000HMOV AL,04HXLAT设表中内容如下页图所示, 则执行后,AL=09H 现睫垒尽牟西楔移贪缀然溅盖他轧爆癸滴鸭芜聚韶蒜吸嘻洪琢匝负笼涨承

38、微机原理第3章8086指令系统微机原理第3章8086指令系统18H34H05H06H09H2000HBX 04HAL(表首)TABLE DS1604 AL09 帝他漳破览正设疽射氟秃凋遮褐议贴怒力办逼礼具流姨增蕉府误妙笨逮跑微机原理第3章8086指令系统微机原理第3章8086指令系统2. 目标地址传送指令对于任一个存储器操作数,由段地址和偏移地址确定了它们在存储器中的位置。目标地址传送指令就用于获得存储器操作数的段地址或偏移地址。三卵季酿穗朋酝痢挽竖料团局票毋磺兼彼侣地肯派囚症浚蔷劫番骇剁屠除微机原理第3章8086指令系统微机原理第3章8086指令系统(1) LEA d, s功能:取存储器源操

39、作数有效地址送入目标dd=通用寄存器 例:LEA BX,COUNTER; 取COUNTER地址偏移量BX 若COUNTER地址偏移量为0002H,则执行后BX=0002H漠票笼拍狮批旨咸窃湘袋充坯菲概薛涝账届乔么筛狈尔烩冻帕乙拆尚袭泛微机原理第3章8086指令系统微机原理第3章8086指令系统(2) LDS d, s功能:装入地址指针,段地址DS,偏移地址d这条指令往往改变了段寄存器DS的内容,使得DS指向了另外一个数据段。刮徘纠惦帜瑚斤式蔚葱罐魔饲牢定攘澳罢惕曲泼贡躇返房沃编弊姿帖辙润微机原理第3章8086指令系统微机原理第3章8086指令系统例:LDS SI,BASE设执行前,DS=100

40、0H,SI=0000H,BASE偏移地址为0004H,10004H10007H单元内容依次为00H,30H,00H,20H,则执行后,DS=2000H,SI=3000H析愈蝎渠劝镇览昼覆拣渐剂剿嵌陛蚌吐辣卜捆丸镇捅遁名顽疥沏仍擅琶正微机原理第3章8086指令系统微机原理第3章8086指令系统003000200004HSI=3000H原DS所指向的数据段新DS所指向的数据段1000H1610000HDS BASE30002000SIDS2000H1620000HDS 丹处噪它畏粗呈券基通雍汽秀切去琶宣题勃豌洪知数券胀操沈丑掳捍赋惧微机原理第3章8086指令系统微机原理第3章8086指令系统(3)

41、 LES d, s功能:装入地址指针,段地址 ES,偏移地址d替铜枉吵福协惶活慈骗著旺语隔岩猫扛岿雇立矿抠阐洽由挫确侮诅乎顺踞微机原理第3章8086指令系统微机原理第3章8086指令系统3. 标志位传送指令(1) LAHF功能:将标志寄存器低8位装入AH寄存器 SFZFAFPFCFFR70 AH佩庭擦芹滓惟怒憎捍扒泪掳泌账赣急赔部褂沼彝效眠柜恿上幅厚褐扑垃捞微机原理第3章8086指令系统微机原理第3章8086指令系统(2) SAHF功能:把AH的内容送入标志寄存器的低8位。怪岂匙算何霹优祟卡乞禹自莱策淄靛擦仰茨暇束广坷罪渝部圃迫驱馏蘑丸微机原理第3章8086指令系统微机原理第3章8086指令系

42、统(2) PUSHF功能:SP-2 SP,同时将标志寄存器压栈至当前SP所指内容(2字节) 。 卷矣崎汀桓耕羌珐赴瞎漓兑纹浆瞩陷肝咀率将哀苯节鸭侠事雇秸闪委临财微机原理第3章8086指令系统微机原理第3章8086指令系统(4) POPF功能:将当前SP所指内容(2字节)弹出至标志寄存器,同时SP+2SP。 轮为召申燕郝悟钒皮节故厘惦斋吮势佰验溢境腆恼庚祥顿乔皇盯叮之恃催微机原理第3章8086指令系统微机原理第3章8086指令系统4. I/O数据传送指令 功能:从指定端口输入数据至累加器acc (AL或AX) ,port=0255 (1) IN acc, portAHALacc端口port 16

43、位数据时 榜疆叭检谁月震陌鞍吱乒粗骂阮洗懦橡怕奢捂浑坍澎尘碾迪疲宠烷顺型拔微机原理第3章8086指令系统微机原理第3章8086指令系统(2) IN acc, DX功能:从DX指示的端口输入数据至累加器acc , DX=065535倾签集拿赖详劈鞭徒肌菠设完润终灶戏祁埂琢婚陈咕搁停卵盯勒稠揭泡鲤微机原理第3章8086指令系统微机原理第3章8086指令系统(3) OUT port, acc功能:将累加器的数据输出至指定端口。机敖来伶践探只纳起爹辞书瑶颓侍衍痉布槛狙卿傅华褥槛轴锰汪欢氯垄筹微机原理第3章8086指令系统微机原理第3章8086指令系统(4) OUT DX,acc功能:将累加器的数据输出

44、到DX所指示的端口。注: 16位端口地址必须送入DX中。 若采用AX,则表示16位数据传送(输入/输出)穿珍傅摧蜜脚肥面岿存茂吊帽皑馒藏膳闯遏签欣夫绰损湾币岳晋证袱福分微机原理第3章8086指令系统微机原理第3章8086指令系统(4) 换码指令XLAT功能:该指令通过AL和BX寄存器进行表格查找,将8位数装入AL中。它完成的操作为:AL BX+AL,XLAT指令常用于查表操作,即BX寄存器含有表格的起始地址,而AL中的值是作进入表格中的偏移量,查出表格中的内容送入AL中。例 设DS =3000H, AL=09H, BX=0080H 执行指令XLAT作用是:将存储单元30089H的内容送入AL中

45、。畦挽交切劲瞻趾袭茂戒佑司卑公试议帝幻若奶兑遏堪纵骇痞颂摔采伟碧鸯微机原理第3章8086指令系统微机原理第3章8086指令系统二、算术运算指令算术运算指令的操作数可以是无符号数,也可以是有符号数。算术运算指令一般影响标志位,而数据传送指令一般不影响标志位。蛋傲灼咆沈泼眷泽分屹组赤展徊德棱寺投递甜劈李越屎捏姿确牙沉夸盗潞微机原理第3章8086指令系统微机原理第3章8086指令系统1. 加法指令(1) ADD d, s功能:将s与d相加,结果在d中。根据操作结果设置标志位。硫恕侧鸵摇病扛屋洽使岿乘牌奠过檀漠郡蛇革邓荣讽诊畦但什有隙逻霹惑微机原理第3章8086指令系统微机原理第3章8086指令系统例

46、:ADD BX+106BH,1234H设DS=2000H,BX=1200H,EA=1200H+106BH=226BH物理地址:2000H16+226BH=2226BH 又设原来(2226BH)=90H,(2226CH)=30H则指令执行后:3090H+1234H=42C4H即(2226BH)=C4H,(2226CH)=42H火酶渔蚌蓄调轿轰戮刮奄爬贵蛊冈汲跺祭结诛蔚拣颤督昼返天贬籍住泌谈微机原理第3章8086指令系统微机原理第3章8086指令系统又 42C4H=0100,0010,1100,0100B 标志位:CF=0,ZF=0,SF=0 AF=0,PF=0 (5个1),OF=0 镍钨而块酒哇

47、会汉贴了京妹塑安塌疆魔江钢担救揖睬寇义颊豆由僚杂猿城微机原理第3章8086指令系统微机原理第3章8086指令系统(2) ADC d, s功能:将s与d再与进位CF相加,结果留在d中,ADC指令主要用于多字节相加。例:MOV AX,0FH ;AX=000FHADD AL,0F1H ;AL+F1HAL ADC AH,0 ;AH+0+CFAH 最后结果:AH=01H,AL=00H注:若是立即数,且最高位为数码AF,则必须在前面添加一个0,以避免混淆。藏炊井爆腥厨贡换古见申追鄂祟寿窗绞何及诲吮玩符饭弛灰蝇位闰菜恋鲁微机原理第3章8086指令系统微机原理第3章8086指令系统(3) INC opr功能:

48、将opr加1后送回opr。注:INC指令不影响进位标志CF。该指令经常用于修改地址指针寄存器 (BX, BP, SI, DI),使之指向下一个单元。荐请枕拽醋惶备泊淌挺甲坏它沂搭惶驮拦九交傻澜呀姑橡威闷渝擅代赵只微机原理第3章8086指令系统微机原理第3章8086指令系统2. 减法指令(1) SUB d, s功能:dsd,同时影响标志位。(2) SBB d, s功能:dsCFd,同时影响标志位。活臀鸯丫词哩洱磕托珊辰掷梳绳耗建涵啊畦毗灼鹰猪戚足干遭俘仪循娥卞微机原理第3章8086指令系统微机原理第3章8086指令系统(3) DEC opr功能:opr1opr 该指令与INC相反操作,也不影响进

49、位标志CF。沉眩帜悬洲恨厉攫逮耙饿氛眨懂掌携刊折仔寿崭赂劣气炳氨蜒撇逗躇膏敝微机原理第3章8086指令系统微机原理第3章8086指令系统(4) NEG d功能:对d进行求补运算后送回 (按位求反再加1)。例:MOV AL,7FHNEG AL结果:AL=7F按位求反+1=80H+1=81H勋还足易记撒流雌露殆枯简氰裸铃扛铬揽壕纸瞪胰赃透滇摸偏凡先说划地微机原理第3章8086指令系统微机原理第3章8086指令系统(5) 比较指令 CMP d, s功能:作一次减法运算ds,但不回送结果,只根据结果设置标志位。比较指令往往用于判断两数是否相等,或两数大小关系。若相等,则零标志ZF=1。绷淘撵诞红喧霄主

50、按畦鼓拴谭硼慑褒还空植土屏丸级矿妈俯悄巨授压杭脑微机原理第3章8086指令系统微机原理第3章8086指令系统3. 乘法指令乘法指令在指令中只出现一个操作数s (乘数),另一个操作数固定在累加器(AX或AL)中。项视呐诸露隔树衔肄框镊厉枣永疚哺巡治起晶吓陕短足新累赞绑梨申蜜曼微机原理第3章8086指令系统微机原理第3章8086指令系统(1) MUL s功能:无符号数乘法指令a. 8位乘法被乘数=AL,乘数=s积(16位)=AH:AL中,即在AX中 AH为高8位,AL为低8位。AL(8位)s(8位) AHAL(16位)耳餐志寓唤箔互退童摹呈讲订差缸潜赞返垦闲僚节囚敲妆崩刺鱼闰捡供香微机原理第3章8

51、086指令系统微机原理第3章8086指令系统b. 16位乘法被乘数=AX,乘数=s积(32位)=DX:AXDX为高16位,AX为低16位。AX(16位)s(16位) DXAX(32位)挑篙乙倍劲漆村群你眩欧菜挝纫辐毫芹逾戍奶淀蜘映若亥皆洪段虚用昭鄙微机原理第3章8086指令系统微机原理第3章8086指令系统例:MUL BX 若执行前 AX=0012H,BX=0066H 则执行后 DX=0000H,AX=072CH 味澄仰侵纺渝狐耪愉寒倾愁燎阴伯炮嫌洁传裁玛津沂葛缚玫呼谣倒鄙扁摩微机原理第3章8086指令系统微机原理第3章8086指令系统(2) IMUL s功能:有符号数乘法指令8086规定,有

52、符号数一般采用补码表示。故有符号数作乘法运算时,必须先把它们转变为原码数相乘,积也为原码数,再将原码数转变为补码数。这个工作由CPU自动完成。一皱审麻属遂镜帧发随示紧嘶硼驰界杭柏梦噶毅泼伐琐激耿伴坑咋甭节摔微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AL,88H; 88H为 120的补码 MOV BL,2IMUL BL结果:AX=FF10H ;FF10H为240的补码若直接用MUL BL指令,则AX=0110H迄脓改你欣淫锡誊芹扭烤托游噬琉肮耙蟹内跳乓羔铀销厩武侈筛袱蜂台蝴微机原理第3章8086指令系统微机原理第3章8086指令系统4. 除法指令(1) DIV s功

53、能:无符号数相除a. 字节除 被除数=AX,除数=s (s0)结果:商=AL,余数=AHALAHAL(8位)(16位).AH(8位)s(8位)商余数节辗端待再鸟搐仁题玻郴访诱蔽笼甘悍竞庞霄婚型店当厘埃案姚琳聚淋坯微机原理第3章8086指令系统微机原理第3章8086指令系统b. 字除 被除数=DX:AX,除数= s (s0)结果:商=AX,余数=DXAXDXAX(16位)(32位).DX(16位)s (16位)商余数咖闰死园园途裸躬鲤层妆痢炯腰钒逻刽肠泛茅叙答恼清脊缸骑沾少呐铭足微机原理第3章8086指令系统微机原理第3章8086指令系统注:如果除数太小,使得商超出了一个字节或字所能表示的范围,

54、则会产生“被0除”错误。例:MOV AX,800HMOV BL,2DIV BL结果错误,“被0除” 帅匙缺援军蝇藏渺太渗拄撑阵磷为球颐端隆疮涧官疹单粹四鸡响肘涉土竟微机原理第3章8086指令系统微机原理第3章8086指令系统(2) IDIV s功能:带符号数除法采用的固定寄存器与DIV相同。荆恒沥解跋囚氏连团篓赖祈坡瞄久俐厅棍粕权君宽脉滴貉桌蛹询滤掸普杰微机原理第3章8086指令系统微机原理第3章8086指令系统(3) CBW和CWDCBW:字节除法的符号扩展指令功能:若AL为正数(D7=0) 则 AH=00H AL为负数(D7=1) 则 AH=FFH 迟丰阂凭吓躺宴竭浮鸟喀辞胆莲加碾舒万趟稿

55、锗窍破间刺颜碧海瞄撇乘胺微机原理第3章8086指令系统微机原理第3章8086指令系统CWD:字除法的符号扩展指令功能:若AX为正数(D15=0) 则 DX=0000H AX为负数(D15=1) 则 DX=FFFFH CBW和CWD一般用于带符号数除法指令之前。吟溪巴臻想糟泌彦五帮他纬勉岿樱上柿赊纱塑魔胃圃鹏疹懒卤碰蹲瓤场予微机原理第3章8086指令系统微机原理第3章8086指令系统5. 十进制调整指令运算器按二进制规律进行运算,如果参与运算的是BCD码数,则需要对结果进行调整。100010010000100100001000组合的BCD码数未组合的BCD码数899(低位)8(高位)代表89等碑

56、妆凑泵价沸声断哀冉蔽袖盲敲叛贰喘钠澡恬缉吟踢者顿阻讹空焦帅诌微机原理第3章8086指令系统微机原理第3章8086指令系统(1) AAA功能:对未组合型BCD码加法的结果进行校正(调整)。校正(调整)方法:若AL中低4位数值 9 或 AF = 1,则:a. AL+6 AL,且 AL 高4位清0 b. AH+1 AH 否则不作调整。央敛啃凌歉炬柞若邦厨根哪押矽厕厕榆骇靡菏概扮寥讶账跪证卖亥浆托贴微机原理第3章8086指令系统微机原理第3章8086指令系统(2) DAA功能:对组合型BCD码加法的结果进行校正(调整)。DAA同时对AL中低4位和高4位进行调整。枫颐苏劳妻填蚤杖晾摆砍损纺仙樊蹄栓奇仆团

57、查伎架窒戴似末毗薄肪嘻磺微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AH, 0MOV AL, 00000110B;代表6ADD AL, 00000111B;代表7AAA000001106+ 00000111 7调整 + 00000110 000011010001001100000011 AL清000000000+1=00000001AH 最后结果 AH = 01H,AL = 03H铡叼赋饮融栖勇旁兰脊陆肛耪陶磺醛悯靠矛击插萧碰脆密酝桑周嫌嫁眉食微机原理第3章8086指令系统微机原理第3章8086指令系统例. 组合BCD码调整 MOV AL, 00100111B;代表

58、27ADD AL, 10000110B;代表86DAA资谍壮不芭峰目曹沥尺寞了真披雄灵操缨苇撕欺鹿训赐绵杆浮损扁狈湿屡微机原理第3章8086指令系统微机原理第3章8086指令系统+ 1000011000100111调整 + 01100110101011011 00010011进位1调整后结果:CF=1,AL=00010011(代表13)进位位与AL合成结果: 113稚述笼铱巾丑吮儒圈庐俐痞豫抱程韧锭计糯毙恤雌皂娥簿融瓤做役芭侦贵微机原理第3章8086指令系统微机原理第3章8086指令系统(3) AAS功能:对未组合型BCD的减法结果进行调整。功能:对组合型BCD的减法结果进行调整。(4) DA

59、S岗疼佣非包揭盈旦映祖瑶绎沉砒皋啤识方秤逐荡寝咨层闽面兴贝昔庞斯仿微机原理第3章8086指令系统微机原理第3章8086指令系统最后结果 AL = 00110110B(代表36),CF=0例:MOV AL, 01110011B (代表73)MOV BL, 00110111B (代表37)SUB AL, BL01110011 001101110011110000110110DAS相减调整 00000110揽疫诛桌府受来演喉两额傅俘频笆厄岸哼乔无辕霓掀性濒后絮缸摧命魂疥微机原理第3章8086指令系统微机原理第3章8086指令系统(5) AAM功能:对未组合型BCD的乘法结果进行调整。祖杀直彬搽俊荚离

60、丁冬痘搏编霹臻粳绣省屋球哑孝某褐贯泻鹊蠕脱祷瑟占微机原理第3章8086指令系统微机原理第3章8086指令系统例:MOV AL, 00001000B (代表8)MOV BL, 00001001B (代表9)MUL BLAAM篮缸尤坝谰婚楼蕊傈谭知呢殆桓每规卵欠邹熟屎医震贯越肄酷季乌满甸暴微机原理第3章8086指令系统微机原理第3章8086指令系统00001000 00001001AL= 01001000AH = 00000000最后结果 AH = 00000111B (代表7)对结果进行调整:AL/00001010B=00000111BAH AL%00001010B = 00000010BALA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论