《部分常用指令和寻址方法[新版》由会员分享,可在线阅读,更多相关《部分常用指令和寻址方法[新版(58页珍藏版)》请在金锄头文库上搜索。
1、第3部分 常用指令和寻址方式,Assembly Language Programming,露帜稼郊鸦斟危军蘑蜗冯众执阴囱樟渐货漂獭础娟罢凄搞绝愈妻涣莲问肪第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,1 常用基本操作,Assembly Language Programming,截夸吞缆肩勘腊桥什似盯屡幂纱特恨笑律凤砧弧拳婆公违林坞犊叠俯殉射第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式, 伪操作,格式: 名称 = 表达式 赋值操作 将表达式的数值指派给名称 表达式一定为数值 名称的值可被多次指派 例如: MAXINT = 7FFFH COUNT = 1 COUNT = C
2、OUNT * 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
4、 mem, reg reg, 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, BYTEFL
5、D MOV CX, WORDFLDBX 段寄存器传送 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 段寄存器间不能传
6、送 MOV CS, 23,叮橙愤孰旷隆料蓟景笋懒雁滔斌沟齿柴栓证壤迂专旱寨滨鹏谈灶放提呻虐第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部分 常用指令
7、和寻址方式第3部分 常用指令和寻址方式,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 传送DAT
8、A1的第一个字节数据 等效的指令 LEA BX, 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运算符,例如 V1 DB ABCD V2 DW 1234H, 567
10、8H V3 DD V2 MOV AL, TYPE V1 ;01H 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的偏移地址 $ 当前偏移地址
11、例:ORG $+8 可以表示跳过8个字节的存储区,慕顿委鞘妹披藐资宗切泪丢级瘴兽兔看喊内络醛洱魏蒂触陕藐晤掸灰釜项第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
12、 PTR BX, 4 MOV BYTE PTR BX, 4,噪掂然冻打春琢纳倍汝嫡宙继毅止颈屠胚咬寸众烂涵血渠上苫嘎信景浪柜第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,简单的算术运算,ADD dest, source SUB dest, source INC dest DEC dest 操作数的类型一定要一致 对标志寄存器起作用,源操作数 可以为常数,存储器地址,通用寄存器 目标寄存器 可以为通用寄存器或者存储器地址 不能同时为操作数,血败君红牌蛮态拥去有蔗沟尽扭珍琵以个反焉喝才痹站遥服概帛异郝炼翼第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,2 寻址方式,Assem
13、bly Language Programming,绅显茫共泞贤沿捏浪涩轩娥捷飘颓庙规淌击瞩助郭俐匣孺朋瘩锈所葛漏莲第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,寻址方式,寻址方式定义了: 操作数获取数据的方法 将数据放置到目的的方法 操作数的数据来源主要有: 来自寄存器寄存器模式 来自指令立即寻址模式 来自存储器存储器模式 直接寻址 直接偏移量寻址 寄存器间接寻址 基址位移量寻址 基址变址寻址 带位移量的基址变址寻址,披公莹认面恶痰亮一毗于堂铡慰太留墨浪梧酪丹棵铁姿尿装攀棍后厄胶吓第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,寄存器寻址,格式: 寄存器的名称 允许的寄存
14、器:任何寄存器 操作数:寄存器中的数据值 举例: ADD AX, BX MOV AL, A CS 不能用 MOV 指令改变 MOV CS, AX 错,还劫玄遣英荫噶数被叙椿溅酉敷囊夫湖彩饶恃混灰敲琐覆靴蛮孩曰探箱寺第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,立即数寻址,格式:各种常数值 举例: ADD AX, 124 ADD AH, 12H,玄榷憾枯冉瓶组醚匣示睡谰庭目拭陶带藤翁绳谐怜均矮谐难材枢苹枚胎址第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,存储器寻址,有效地址:地址是由操作数所决定的,不同的模式决定了不同的地址计算方法 直接寻址 直接偏移量寻址(相对直接寻址
15、) 寄存器间接寻址 基址偏移量寻址 基址变址寻址 带偏移量的基址变址寻址,恰抚大屠舌梦坦针扒耐掖逆氦拔智昏赋坡旺傍帘遗硬志姐附畔棵耐效夜痉第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,TITLE A06IMMED (EXE) Example of immediate operands .MODEL SMALL .STACK 64 ;Define stack .DATA ;Define data segment DB Immediate Values BYTEFLD DB 150 ;Byte WORDFLD DW 300 ;Word DWDFLD DD 0 ;Doubleword .
16、386 .CODE MAIN PROC FAR MOV AX,data ;Set address of data MOV DS,AX ; 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 MAIN ENDP END MAIN,校往萧臭睹最费环矽碑亩售蕴钞恫瓜扒奏候池豌剑整奇摸奶盒藏粳笨销厅第3部分 常用指令和寻址方式第3部分 常用指令和寻址方式,1