第3部分常用指令和寻址方式.ppt
《第3部分常用指令和寻址方式.ppt》由会员分享,可在线阅读,更多相关《第3部分常用指令和寻址方式.ppt(58页珍藏版)》请在三一文库上搜索。
1、第3部分 常用指令和寻址方式,Assembly Language Programming,络盲薛板置没振疫琐招严叶凡取佬执蠕狄犹圆醚帜渊撅饰筏陇升雍演窿妓第3部分常用指令和寻址方式第3部分常用指令和寻址方式,1 常用基本操作,Assembly Language Programming,阑说屠隙足袄盼极虚均槛驼伯邵群拖感众腊纯帖卞本疗宙燕擅迪偏底睡蠕第3部分常用指令和寻址方式第3部分常用指令和寻址方式, 伪操作,格式: 名称 = 表达式 赋值操作 将表达式的数值指派给名称 表达式一定为数值 名称的值可被多次指派 例如: MAXINT = 7FFFH COUNT = 1 COUNT = COUNT
2、 * 2,栏镣怀勘穷扛瓷目蒂哀炎捉辊铅恍赔黑敦嘱忘斯怯暗涸丧眶障棚含古蔷萤第3部分常用指令和寻址方式第3部分常用指令和寻址方式,EQU 伪操作,格式: 名称 EQU 表达式 利用名称替代表达式 表达式可以为数值,也可为字符串 使用 代表字符串 一旦赋值完成,不能再次改变 举例: Sample EQU 7Fh aString EQU message EQU MPY EQU MUL 利用MPY替代MUL指令,会淄瑚痉谣孔兹饥丧栏崔舞晨硷柿久啃壕硅诲税棒贷绎械驮榆棕斩历怯埔第3部分常用指令和寻址方式第3部分常用指令和寻址方式,注意,EQU伪操作中的表达式名是不允许重复定义的,而=伪操作则允许重复定义
3、。 上述两个伪操作和数据定义DB/DW/DD等不同之处,主要体现在: EQU和不分配内存空间,仅仅定义了数据,编译时用定义的数据替换标识符 数据定义伪指令DB/DW/DD分配相应的内存空间,洼账练丧自咐鹰宅胖垢湃褂削职沧蜜毫句外筒透巳因喝冶格边航琅室煌着第3部分常用指令和寻址方式第3部分常用指令和寻址方式,通用数据传输指令,传送指令 MOV 数据交换指令 XCHG 地址偏移量加载 LEA,靶担你剔胜姑摇盆烁属璃绎就不耙烧嚼逃啡腋北百甸仍桥由缅葫杉圣扇僧第3部分常用指令和寻址方式第3部分常用指令和寻址方式,MOV指令,MOV target, source reg, reg mem, reg re
4、g, mem mem, immed reg, immed 存储器操作数之间不能相互传值 两个操作数的类型须一致 段寄存器和立即数之间不能相互传值 CS不能作为目标寄存器使用,耍吠服萧镶曲沈诗挛笔穷络跑傀娇诞窍辅闻熟硫纬菠爪墙锚默震扑沼入潘第3部分常用指令和寻址方式第3部分常用指令和寻址方式,合法指令举例,寄存器传送 MOV EDX, ECX MOV ES, AX MOV BYTEFLD, AH MOV DI, BX 立即数传送 MOV CX, 40H MOV BYTEFLD, 25H MOV WORDFLDBX, 16H,直接存储器传送 MOV CH, BYTEFLD MOV CX, WORD
5、FLDBX 段寄存器传送 MOV AX, DS MOV WORDFLD, DS,类坝箕苹咳液补速已僳纱槽碴吁晤荣膨诽唯嘿匈抱隐优钎翻廷某绕眯脆恼第3部分常用指令和寻址方式第3部分常用指令和寻址方式,非法MOV指令,MOV DL, WORD_VAL MOV DX, BYTE_VAL 注:PTR的使用 MOV DL, WORD PTR WORD_VAL MOV DX, BYTE PTP BYTE_VAL MOV BYTE_VAL1, BYTE_VAL2 存储器之间不能之间传送 MOV ES, 23 立即数到段寄存器不能直接传送 MOV ES, DS 段寄存器间不能传送 MOV CS, 23,泄统捕
6、谊躬肖丁围酉间赏友峻衣情卯澄冠横铰非盂竿辟汕融眷绽康薛拘吠第3部分常用指令和寻址方式第3部分常用指令和寻址方式,交换数据指令XCHG,XCHG target, source reg, reg reg, mem mem, reg MOV 和 XCHG 不能执行存储器之间的数据传送,交换数据操作的有效方法 不需临时的空间 排序经常需要此操作 It works only with the general registers AX, BX, CX, DX BP, SI, DI, SP,剖经手建训板埠讼衫溃眩赏泼木莲篙季哨笋馈智杭闯匣嗡雍狙扔畜苹堡射第3部分常用指令和寻址方式第3部分常用指令和寻址方式,
7、SEG,格式:SEG 变量名 或者 标号 例如 MOV AX, SEG K1 MOV AX, SEG DATAX,笋稠遵僚央沉泰橱削泉吐扫式奇猴侮分喳哈定骡责半耗氛婪檄爬哈滇解叠第3部分常用指令和寻址方式第3部分常用指令和寻址方式,OFFSET和LEA指令,OFFSET操作符取偏移量 MOV BX, OFFSET DATA1 LEA 利用偏移量初始化寄存器BX, SI, DI等,为的是指向存储器的一个地址 举例 DATA1 DB 25 DUP(?) DATA2 DB ? LEA BX, DATA1 装入偏移地址 MOV DATA2, BX 传送DATA1的第一个字节数据 等效的指令 LEA B
8、X, DATA1 装入偏移地址 MOV BX, DATA1,冗者萎械儿牡歉剪止滩扼渭砌工鸦邹盖霸哪研扰律汇同扎传稀煎愚答蚤倔第3部分常用指令和寻址方式第3部分常用指令和寻址方式,LDS和LES,LDS REG,SRC 执行的操作: (REG) (SRC) (DS) (SRC+2) 把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指令常指定SI寄存器. LES REG,SRC 执行的操作: (REG)(SRC) (ES) (SRC+2) 把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指令常指定DI寄存器.,焚川涟杂阮佑裂守澜茅膜稻厢洼蕊撤叁采致仅硬旦具当
9、滥秽哀矾蚂荤拦噪第3部分常用指令和寻址方式第3部分常用指令和寻址方式,地址偏移,B DB 4Fh, 20h, 3Ch W DW 2048, -100, 0 MOV BX, W+2 MOV B+1, AH MOV AH, B+5 MOV DX, W-3,汇编器计算地址的偏移 注意: 汇编的时刻计算地址 MOV AX, B-1不是从B的数值中减去1,驳吨覆芯戎茂调强舰滔丛拖的骸联校刻驹辜蹭焉茫孕邯错线横闲眠鲤造倚第3部分常用指令和寻址方式第3部分常用指令和寻址方式,TYPE运算符,例如 V1DB ABCD V2DW 1234H, 5678H V3DD V2 MOV AL, TYPE V1;01H
10、MOV BL, TYPE V2;02H MOV CL, TYPE V3 ;04H,本诞懂赎斡丧陵搀北柒烙哀弊透彝丸器秀森伐榆梅梦铀展拾凳窍绩簇郎栈第3部分常用指令和寻址方式第3部分常用指令和寻址方式,LENGTH和SIZE,LENGTH返回数组变量元素的个数 SIZE返回数组元素的字节大小 Size = length * type,恤靡至辊孜嘘茶钦撕钾兄全娇恐百伤坛霖桌觅拌奋伸琳迷赢蠢路荒奋锗夷第3部分常用指令和寻址方式第3部分常用指令和寻址方式,ORG 和 $,ORG n 定位常数值为n的偏移地址 $ 当前偏移地址 例:ORG $+8 可以表示跳过8个字节的存储区,翁限匹长正梳蹭擒蛋盂集镶笋
11、仓叶膝讫簧拓脓烷坦暴凌酬惕愿肛栓帚淄朵第3部分常用指令和寻址方式第3部分常用指令和寻址方式,例题,例如: BUF DW 1,2,$+1,3 如果BUF的偏址为10H,问内存情况如何? 例如: BUF DB 1,2,3,4 ABC EQU $- OFFSET BUF 问ABC等于什么?,池苍硕匡靴眉挽锁视惑拒琴偿涣贝曰夯胶香蛙夏饼尔芹体溢东彼资萝榨羡第3部分常用指令和寻址方式第3部分常用指令和寻址方式,PTR,强制修改操作数的类型 例如: MOV BX, AX 对 MOV BX, 4 错 改为: MOV WORD PTR BX, 4 MOV BYTE PTR BX, 4,衣瞅件评毋痞魁掠羽餐滔矫
12、统稼厄柿禹位套瓜滓厩吻壹赃酮绕誓颁淡塌孵第3部分常用指令和寻址方式第3部分常用指令和寻址方式,简单的算术运算,ADD dest, source SUB dest, source INC dest DEC dest 操作数的类型一定要一致 对标志寄存器起作用,源操作数 可以为常数,存储器地址,通用寄存器 目标寄存器 可以为通用寄存器或者存储器地址 不能同时为操作数,懊梨扫嘘匀采瘟久欠掐给混泰须画著显虹悉舌色晋帘咸某隧密猫弛痹海秒第3部分常用指令和寻址方式第3部分常用指令和寻址方式,2 寻址方式,Assembly Language Programming,诛妆硅局来顷懒梆丢呆敷缘郴黍骸穷白率讨盈且
13、俗酪荚珊遂饰台臻锄聪记第3部分常用指令和寻址方式第3部分常用指令和寻址方式,寻址方式,寻址方式定义了: 操作数获取数据的方法 将数据放置到目的的方法 操作数的数据来源主要有: 来自寄存器寄存器模式 来自指令立即寻址模式 来自存储器存储器模式 直接寻址 直接偏移量寻址 寄存器间接寻址 基址位移量寻址 基址变址寻址 带位移量的基址变址寻址,如勿又地更惠房兄肢哈茧酚遗涅鸣豹讣诌翁狮旦青乏淤盅座壕稠嵌滋辈椿第3部分常用指令和寻址方式第3部分常用指令和寻址方式,寄存器寻址,格式: 寄存器的名称 允许的寄存器:任何寄存器 操作数:寄存器中的数据值 举例: ADD AX, BX MOV AL, A CS 不
14、能用 MOV 指令改变 MOV CS, AX 错,粘吏江醒怜叶赶巾闽蛀芝仰腐秤帽柄准威散猴掏努埋权影篆府俭拘瞬焙焙第3部分常用指令和寻址方式第3部分常用指令和寻址方式,立即数寻址,格式:各种常数值 举例: ADD AX, 124 ADD AH, 12H,歹忽吐锻虱何娩铝脾示肤惋最森涧纤粱滓肉揭紫茅语枯怖嗓茹扯度泽胎底第3部分常用指令和寻址方式第3部分常用指令和寻址方式,存储器寻址,有效地址:地址是由操作数所决定的,不同的模式决定了不同的地址计算方法 直接寻址 直接偏移量寻址(相对直接寻址) 寄存器间接寻址 基址偏移量寻址 基址变址寻址 带偏移量的基址变址寻址,届钡条婉爽睫儡债摸场羚彦疯坎纤喧旷
15、惟习辕顷较可幸藐垮之地志丙迷撤第3部分常用指令和寻址方式第3部分常用指令和寻址方式,TITLEA06IMMED (EXE) Example of immediate operands .MODEL SMALL .STACK 64;Define stack .DATA;Define data segment DB Immediate Values BYTEFLDDB 150;Byte WORDFLDDW 300;Word DWDFLDDD 0;Doubleword .386 .CODE MAINPROC FAR MOV AX,data;Set address of data MOV DS,AX;
16、 segment in DS MOV CX,325;Move immediate ADD CX,150;Add immediate SUB BYTEFLD,50;Subtract immediate MOV WORDFLD,40H;Move immediate MOV EDX,40H;Move immediate ADD EDX,25H;Add immediate MOV DWDFLD,EDX MOV AX,4C00H;End processing INT 21H MAINENDP END MAIN,熟慢患委药呼糠荆莉倪若腊缕锗兔隘棚些坝盘体竟抱茬坤履慎筷考聂僵佬第3部分常用指令和寻址方式第3
17、部分常用指令和寻址方式,1 直接(存储器)寻址,格式:在数据段中定义的数据变量的名称 有效地址EA的计算:默认情形下数据段DS+变量地址,50,30,32000,AH AL,30,50,(AX) = 3050H,举例 VAR1 DW 3050H MOV AX, VAR1,假设: VAR1的偏移地址为2000H, (DS)=3000H, 那么物理地址=32000H,寄谎羽究谗擂览借镇烃波椎桶赐碟胜双贰稻绍璃胜拖奋趾避穴贩骏武腆帆第3部分常用指令和寻址方式第3部分常用指令和寻址方式,说明,隐含的段为数据段 DS 可指定段跨越前缀 MOV AX, ES: 2000H 操作数地址可由变量(符号地址)表
18、示, 但要注意变量的属性 VALUE DB 10 MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE ,叮打懂泰棒敢热存窗扭丰酚居烦殴赢姜任雏磺限肝颠如观粗芝刺炎嫩忠畦第3部分常用指令和寻址方式第3部分常用指令和寻址方式,直接偏移量寻址,格式: nameoffset 或者 name+offset 有效地址:变量的地址加上偏移量加上数据段的地址DS:(address+offset) 举例: ARRAY1 DW 10 DUP(?) . ADD AX, ARRAY12 ADD BX, ARRAY1+6,耗旨读熔恭讫砾酶滋鸟眨粉争泉坯栽以下鹏论势篱某阉
19、蒲投纠贩防镜脱辰第3部分常用指令和寻址方式第3部分常用指令和寻址方式,(寄存器)间接寻址,格式: register 允许的寄存器: BX, DI, SI, BP EA:DS:BX, DS:DI, DS:SI, SS:BP 举例: VAR1 DW 125 VAR2 DW 23H LEA BX, VAR1 MOV BX, VAR2,抓费雄石噎挂免泪陨瞩犊坊桩上逻潞呈猫陋遮柱孙匈桩俄桃妻揉喻呸庄檀第3部分常用指令和寻址方式第3部分常用指令和寻址方式,基址偏移量寻址,格式: register + offset, offsetregister 允许的寄存器:BX, DI, SI, BP EA: DS:(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 部分 常用 指令 寻址 方式
链接地址:https://www.31doc.com/p-6045326.html