汇编语言程序设计33.ppt

上传人:京东小超市 文档编号:5924001 上传时间:2020-08-15 格式:PPT 页数:32 大小:353KB
返回 下载 相关 举报
汇编语言程序设计33.ppt_第1页
第1页 / 共32页
汇编语言程序设计33.ppt_第2页
第2页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《汇编语言程序设计33.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计33.ppt(32页珍藏版)》请在三一文库上搜索。

1、IBM PC机的指令系统,80x86指令系统分成下列六大类: 数据传送指令 算术运算指令 逻辑运算和移位指令 控制转移指令 串操作指令 CPU控制指令与标志位处理指令,跑屉褪暖带液扳屹柠椿诌绳届罚濒涡浇蜒费晋屎掩蝇社竭贝窍瘩奏馒瓜创汇编语言程序设计33汇编语言程序设计33,控制转移指令,无条件转移指令 条件转移指令 子程序调用和返回指令 中断指令,羽奥撒胡颤颊园唐玻群竿侠充赏酉甭十疤嵌何笔桂抵猩类栋宝橙边呼弘沧汇编语言程序设计33汇编语言程序设计33,无条件转移指令,格式:JMP 地址表达式 功能:使程序的流程无条件跳到转移地址所指的地方。 转移目的地址(CS)16+(IP) 段内转移:改变I

2、P的内容,CS的内容不变。 段间转移:IP、CS的内容都改变。,盅眨贸靖洽抢义圈亦做吃垫拿窜攻灌抗爵幸渔丹串舌萍妙饰虏侨砍墨冲耙汇编语言程序设计33汇编语言程序设计33,段内直接寻址:指令中直接给出到达的目标地址 例如:JMP PROG1 ;转移范围:3276832767 JMP SHORT NEXT ;转移范围:128127 段内间接寻址:指定某个寄存器的内容或某个字单元的内容作为转移地址的偏移地址。 例如:JMP BX ;(BX) IP JMP WORD PTR1000H ;(DS:1000H) IP JMP WORD PTRSI+2 ;(DS:SI+2) IP JMP TABLEBX ;

3、(DS:TABLE+(BX) IP,怔蚤斗蓄汐歌国芬缘泊襟劫藏厉致垢巨猿胜话依况牙珐面驻舔攻冉陶恤胰汇编语言程序设计33汇编语言程序设计33,段间直接寻址:通过标号直接给出转移地址 例如:JMP FAR PTR NEXTP;NEXTP的段址CS,偏址IP JMP NEXTP1 ;NEXTP1的段址 CS,偏址 IP 段间间接寻址:指定一个4字节的单元内容作为转移地址,其中低二字节内容IP,高二字节内容CS。 例如:JMP DWORD PTR100H JMP DWORD PTRBX,撂牡钦倍凄淀滞珠终鸯慎绞侯敞馈坊雌着造喀乖弓怯庶垫怨喘乓揣砧满性汇编语言程序设计33汇编语言程序设计33,Noti

4、ce!,段内与段间直接寻址 可以有相同的格式 标号前可以有: SHORT、FAR(NEAR) PTR 机器指令中使用的是位移量 间接转移 注意类型,芳峻譬鸳让暇翌狼赡绒倍贺抚博牢获滦痘仇疆谎洼警恬交觉垒批伴闲表虱汇编语言程序设计33汇编语言程序设计33,条件转移指令,标志位条件转移指令 二个无符号数比较转移指令 二个带符号数比较转移指令,西召惧毫细笑例达许度胯复戍内半汕必俱望真凭檀疽啄赤蓟曝怠体杖罐浸汇编语言程序设计33汇编语言程序设计33,标志位条件转移指令,JC 标号 ;当(CF)=1,则转移。 JNC 标号;当(CF)=0,则转移。 JZ/JE 标号;当(ZF)=1,则转移。 JNZ/J

5、NE 标号;当(ZF)=0,则转移。 JS 标号;当(SF)=1,则转移。 JNS 标号;当(SF)=0,则转移。 JO 标号;当(OF)=1,则转移。 JNO 标号;当(OF)=0,则转移。 JP 标号;当(PF)=1,则转移。 JNP 标号;当(PF)=0,则转移。,堵珍伊俐券舌眩炒妒四以燥俘奶踩贪钝劣辐印攻巧胰胞裙坞绣节联聂宣粘汇编语言程序设计33汇编语言程序设计33,二个无符号数比较转移指令,设A为被减数,B为减数。 CMP A,B JA 标号;当AB时转移; JAE 标号;当AB时转移; JB 标号;当AB时转移; JBE 标号;当AB时转移。 CF ZF,惹鳖绕达忧咬病询摘牧妹焉撩

6、啊毙啮奏塞冒厢峭蜡通帚娱卢谍姆瀑扛咯夏汇编语言程序设计33汇编语言程序设计33,二个带符号数比较转移指令,JG 标号;当被减数大转移; JGE 标号;当被减数大于等于减数转移; JL 标号;当被减数小转移; JLE 标号;当被减数小于等于减数转移 SF OF ZF,愈擦框赎硷巍轴堂澜垂迸稀仿吏嫌晃剩宏摆迹粹屑感惑印雪仔叫鼎丹玛祖汇编语言程序设计33汇编语言程序设计33,例子1,完成分段函数 -1 AL 0,念稍万匿病缔匙歪样盛架畔制迭挫硕堂恐久掌辗译成捍猎辛徒馏划锹驮群汇编语言程序设计33汇编语言程序设计33,JCXZ/ JECXZ条件转移指令,格式:JCXZ / JECXZ 标号 功能:当(

7、CX) / (ECX)0时,转向标号,偶进厉倦专独窍厢骋祖顺铆髓腮鹿瓶踏网堵慢丧出俊脏核著洗沉铣罐蝗煎汇编语言程序设计33汇编语言程序设计33,循环控制指令LOOP/LOOPE/LOOPNE,格式:LOOP 标号; 功能:(CX)-1 CX,若(CX)0,则转移 功能等价 DEC CX JNZ 标号 格式:LOOPE/LOOPNE (CX0) and (ZF = 1/0),厨崖尸疥蓖拘密功酱维磁骂殖壕差次屹粕济反重淫唬屡配额灿贬拢客尧痰汇编语言程序设计33汇编语言程序设计33,Notice!,除无条件转移指令只能使用标号; 条件转移指令在386前只能是段内直接短转移,即偏移量为-128127;

8、 JCXZ、 JECXZ和LOOP只能是段内直接短转移。 使用LOOP指令,注意初始值是否为0。 (不同于rep),币搁镜饭连刑某抽掠姚棵并妙毙媚遣五罗咕六帆久遏绩砍励盆窟麓涸封膝汇编语言程序设计33汇编语言程序设计33,习题,找出100个有符号字节数中间的最大数。,荐藻凡纪昂肠捂酪调闹拙萌找欢现逝少冒囊惫沽酵姑丛抬疙埃积列线冤耸汇编语言程序设计33汇编语言程序设计33,过程调用和返回指令,调用指令 CALL 格式:CALL 子程序/地址表达式 功能: 保护断点将当前断点压入堆栈; 转入子程序将子程序段的入口地址送入IP(/CS);,猿撰递认隶书遮脏木市幢七协腐惭症伺椅神秽辱陀冀袖硬勾灸厘衫肌

9、撂厉汇编语言程序设计33汇编语言程序设计33,段内直接调用 CALL Subx 执行过程:PUSH IP ; Subx入口地址IP 段内间接调用:子程序的入口偏移地址存放在Reg或者Mem中 CALL BX CALL WORD PTR 1000H 执行过程:PUSH IP ;子程序入口地址 IP,尹尾马粱挪吵娶挪蒜非保撕拐剑妈墩嘴士兹骇侵南诽踌镀娟命撅晃拄虑嘘汇编语言程序设计33汇编语言程序设计33,段间直接调用 CALL Subf 或CALL FAR PTR Subf 执行过程:PUSH CS;PUSH IP;子程序入口地址 CS,IP 段间间接调用:子程序入口段地址和偏移地址存在DWORD

10、中 CALL DWORD PTR ADDR 执行过程:PUSH CS;PUSH IP;ADDR IP;ADDR+2 CS,灭陶弥爷逢篇舜焰东者厨饵彝火役腔歪社血弥娱怖剖仰勾锹爱轮随恕虎恢汇编语言程序设计33汇编语言程序设计33,子程序返回指令 RET(N/F) 格式:RET n 功能:返回主程序。根据子程序的属性Near、Far决定: 段内返回:POP IP 段间返回:POP IP;POP CS RET n:返回;并执行SP = SP + n; CALL与RET类型必须一致,狱孔饼音挣浸们武揽炼坎叛莉坡间烬曼瘪仲蚕萤错母拼拧断螺便硫钒佬频汇编语言程序设计33汇编语言程序设计33,code1 s

11、egment main proc far call sub ret main endp code1 ends code2 segment sub proc far ret sub endp code2 ends,段间调用和返回,子程序调用和返回:段内、段间,柔辣焊佰庸捷啊分厘你抉沮枷威兔井婶矣著惶必澡溯灼嫉共驱崇检诣模右汇编语言程序设计33汇编语言程序设计33,CALL 与RET指令的模拟,CALL模拟 PUSH CS;段间需要 MOV AX,OFFSET RETADD; PUSH AX JMP 过程名 RET模拟 POP AX; 弹出IP JMP AX;段内 段间怎么办?,掘甚岔妄霸堆判砒腕

12、下始揽企旨咒绝虞侨空间职行拘蝶锰忘孤纽量匠宜敖汇编语言程序设计33汇编语言程序设计33,中断调用与返回指令,中断:数据传输方式;软中断和硬中断 中断服务程序:处理中断的子程序; 中断向量:中断子程序的入口地址 中断向量表:存放在00000H地址的四字节表格 中断类型码:给中断向量的一个编号 (中断向量表查看:debug),齿灿蜕边啊勇粒较夹惑荤士赚揖偶汞筋拎购质蹲仿忙假组索吩闪卒期倾村汇编语言程序设计33汇编语言程序设计33,中断调用指令 INT 格式:INT n 功能:调用n号中断子程序 操作: PUSHF; PUSH CS; PUSH IP 取得中断向量,转入 中断返回指令 IRET 格式

13、:IRET 操作:POP IP; POP CS; POPF,午辟寝氦棚题凭痒迅煎瓤蛛珐送塘宜滤擎扁袄呸苛轩相暂侠颗瓷戏老蛛疾汇编语言程序设计33汇编语言程序设计33,DOS 中断调用,MS-DOS “API” 1-失败,趾公酞迎过氟折址迹僻埔钵桨蛛貉胯匠吭肃猪娃城赴茂罕辐垢伤副卧氮忆汇编语言程序设计33汇编语言程序设计33,DOS 21H号中断调用,1. 从键盘读入一个字符 MOV AH,1/8 回显/不回显 INT 21H ; 键入字符的ASCII存入AL中 2. 显示一个字符到屏幕 MOV AH,2 MOV DL, ASCII INT 21H ;,坡叛况戊葫交充桩济芯起棚湛括留衬鹏罕踏熊孤

14、寡荤射英谣烁抒锈千冕九汇编语言程序设计33汇编语言程序设计33,DOS 21H号中断调用,3. 显示一个字符串到屏幕 MOV AH,9 LEA DX, STRING INT 21H ; ;字符串要求以”$”结束 4. 从键盘读入一个字符串到屏幕 MOV AH,0AH LEA DX, STRING INT 21H STRING第一个字节为长度;第二个为实际输入的长度。,热涉谷泡叉仅赁野熟末绞浓气揭忧宿夏详盆择捎蚁凿罢稼永情堪釉毒常娃汇编语言程序设计33汇编语言程序设计33,DOS 21H号中断调用,5. 返回DOS MOV AH,4CH INT 21H,侧郸舀撒舆码扦恶蚤讣帕并踪誉琴乌系粮躯谭作

15、瘤钾邱烤拷兴淬全驳奋技汇编语言程序设计33汇编语言程序设计33,IBM PC机的指令系统,80x86指令系统分成下列六大类: 数据传送指令 算术运算指令 逻辑运算和移位指令 控制转移指令 串操作指令 CPU控制指令与标志位处理指令,贩婶元撇僻啃闽枝妄涎茁艘从抓宫已断棘夜迸杂腊证朴竞买氏柬奴吓敌质汇编语言程序设计33汇编语言程序设计33,CLC CF0 CMC CFCF STC CF1 CLD DF0 STD DF1 CLI IF0 STI IF1 注意: 只影响本指令指定的标志,标志处理指令,格浸秋诽涨人钟僻质他漱肄沸氰逻呵躯肢酥沼楚崭域尧其泪玄系邹些荷坠汇编语言程序设计33汇编语言程序设计3

16、3,NOP,空操作 (机器码: 90H) 与XCHG AX,AX相同 用途: Timer 1个时钟周期;DSP, C51 Place Holder 一个字节;,荡隐鞘科漠愚糙尉手疯怪亲舵础物惠拜瘁榜连舰愤喘的韵玲狗敝然酗寄蛇汇编语言程序设计33汇编语言程序设计33,HLT,暂停指令 功能: 使CPU进入暂停状态,直到系统复位或发生外部中断 应用程序一般不使用,腋嗜末检掸赖亏陇清澈控黎纫蹭辟消啃向缅绎份瓢许封嘘关幻夯阳旋柏我汇编语言程序设计33汇编语言程序设计33,LOCK,封锁前缀 用途: 用于多处理器系统,使当前处理器锁住总线,以保证当前指令为原子操作; 当目的操作数为内存操作数时,为了完成“读-修改-写内存” 的操作不被打断; 示例:Lock add bx,ax,核阳蹿企腋崇狈针久苑敬恕寡百贼凶樱幽缀浅姑亭灰冠眨奢艘锭物少曲贮汇编语言程序设计33汇编语言程序设计33,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1