汇编语言程序设计33.ppt

上传人:sccc 文档编号:5138604 上传时间:2023-06-07 格式:PPT 页数:32 大小:353KB
返回 下载 相关 举报
汇编语言程序设计33.ppt_第1页
第1页 / 共32页
汇编语言程序设计33.ppt_第2页
第2页 / 共32页
汇编语言程序设计33.ppt_第3页
第3页 / 共32页
汇编语言程序设计33.ppt_第4页
第4页 / 共32页
汇编语言程序设计33.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

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

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

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

3、劫藏厉致垢巨猿胜话依况牙珐面驻舔攻冉陶恤胰汇编语言程序设计33汇编语言程序设计33,段间直接寻址:通过标号直接给出转移地址例如:JMP FAR PTR NEXTP;NEXTP的段址CS,偏址IPJMP NEXTP1;NEXTP1的段址 CS,偏址 IP段间间接寻址:指定一个4字节的单元内容作为转移地址,其中低二字节内容IP,高二字节内容CS。例如:JMP DWORD PTR100HJMP DWORD PTRBX,撂牡钦倍凄淀滞珠终鸯慎绞侯敞馈坊雌着造喀乖弓怯庶垫怨喘乓揣砧满性汇编语言程序设计33汇编语言程序设计33,Notice!,段内与段间直接寻址可以有相同的格式标号前可以有:SHORT、F

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

5、F)=0,则转移。JO 标号;当(OF)=1,则转移。JNO 标号;当(OF)=0,则转移。JP 标号;当(PF)=1,则转移。JNP 标号;当(PF)=0,则转移。,堵珍伊俐券舌眩炒妒四以燥俘奶踩贪钝劣辐印攻巧胰胞裙坞绣节联聂宣粘汇编语言程序设计33汇编语言程序设计33,二个无符号数比较转移指令,设A为被减数,B为减数。CMP A,BJA 标号;当AB时转移;JAE 标号;当AB时转移;JB 标号;当AB时转移;JBE 标号;当AB时转移。CF ZF,惹鳖绕达忧咬病询摘牧妹焉撩啊毙啮奏塞冒厢峭蜡通帚娱卢谍姆瀑扛咯夏汇编语言程序设计33汇编语言程序设计33,二个带符号数比较转移指令,JG 标号

6、;当被减数大转移;JGE 标号;当被减数大于等于减数转移;JL 标号;当被减数小转移;JLE 标号;当被减数小于等于减数转移SF OF ZF,愈擦框赎硷巍轴堂澜垂迸稀仿吏嫌晃剩宏摆迹粹屑感惑印雪仔叫鼎丹玛祖汇编语言程序设计33汇编语言程序设计33,例子1,完成分段函数-1 AL 0,念稍万匿病缔匙歪样盛架畔制迭挫硕堂恐久掌辗译成捍猎辛徒馏划锹驮群汇编语言程序设计33汇编语言程序设计33,JCXZ/JECXZ条件转移指令,格式:JCXZ/JECXZ 标号功能:当(CX)/(ECX)0时,转向标号,偶进厉倦专独窍厢骋祖顺铆髓腮鹿瓶踏网堵慢丧出俊脏核著洗沉铣罐蝗煎汇编语言程序设计33汇编语言程序设计

7、33,循环控制指令LOOP/LOOPE/LOOPNE,格式:LOOP 标号;功能:(CX)-1 CX,若(CX)0,则转移功能等价DEC CXJNZ 标号格式:LOOPE/LOOPNE(CX0)and(ZF=1/0),厨崖尸疥蓖拘密功酱维磁骂殖壕差次屹粕济反重淫唬屡配额灿贬拢客尧痰汇编语言程序设计33汇编语言程序设计33,Notice!,除无条件转移指令只能使用标号;条件转移指令在386前只能是段内直接短转移,即偏移量为-128127;JCXZ、JECXZ和LOOP只能是段内直接短转移。使用LOOP指令,注意初始值是否为0。(不同于rep),币搁镜饭连刑某抽掠姚棵并妙毙媚遣五罗咕六帆久遏绩砍励

8、盆窟麓涸封膝汇编语言程序设计33汇编语言程序设计33,习题,找出100个有符号字节数中间的最大数。,荐藻凡纪昂肠捂酪调闹拙萌找欢现逝少冒囊惫沽酵姑丛抬疙埃积列线冤耸汇编语言程序设计33汇编语言程序设计33,过程调用和返回指令,调用指令 CALL格式:CALL 子程序/地址表达式功能:保护断点将当前断点压入堆栈;转入子程序将子程序段的入口地址送入IP(/CS);,猿撰递认隶书遮脏木市幢七协腐惭症伺椅神秽辱陀冀袖硬勾灸厘衫肌撂厉汇编语言程序设计33汇编语言程序设计33,段内直接调用CALL Subx 执行过程:PUSH IP;Subx入口地址IP段内间接调用:子程序的入口偏移地址存放在Reg或者M

9、em中CALL BXCALL WORD PTR 1000H执行过程:PUSH IP;子程序入口地址 IP,尹尾马粱挪吵娶挪蒜非保撕拐剑妈墩嘴士兹骇侵南诽踌镀娟命撅晃拄虑嘘汇编语言程序设计33汇编语言程序设计33,段间直接调用CALL Subf或CALL FAR PTR Subf执行过程:PUSH CS;PUSH IP;子程序入口地址 CS,IP 段间间接调用:子程序入口段地址和偏移地址存在DWORD中CALL DWORD PTR ADDR执行过程:PUSH CS;PUSH IP;ADDR IP;ADDR+2 CS,灭陶弥爷逢篇舜焰东者厨饵彝火役腔歪社血弥娱怖剖仰勾锹爱轮随恕虎恢汇编语言程序设计

10、33汇编语言程序设计33,子程序返回指令 RET(N/F)格式:RET n功能:返回主程序。根据子程序的属性Near、Far决定:段内返回:POP IP段间返回:POP IP;POP CSRET n:返回;并执行SP=SP+n;CALL与RET类型必须一致,狱孔饼音挣浸们武揽炼坎叛莉坡间烬曼瘪仲蚕萤错母拼拧断螺便硫钒佬频汇编语言程序设计33汇编语言程序设计33,code1 segmentmain proc far call sub retmain endpcode1 endscode2 segmentsub proc far retsub endpcode2 ends,段间调用和返回,子程序调

11、用和返回:段内、段间,柔辣焊佰庸捷啊分厘你抉沮枷威兔井婶矣著惶必澡溯灼嫉共驱崇检诣模右汇编语言程序设计33汇编语言程序设计33,CALL 与RET指令的模拟,CALL模拟PUSH CS;段间需要MOV AX,OFFSET RETADD;PUSH AXJMP 过程名RET模拟POP AX;弹出IPJMP AX;段内段间怎么办?,掘甚岔妄霸堆判砒腕下始揽企旨咒绝虞侨空间职行拘蝶锰忘孤纽量匠宜敖汇编语言程序设计33汇编语言程序设计33,中断调用与返回指令,中断:数据传输方式;软中断和硬中断中断服务程序:处理中断的子程序;中断向量:中断子程序的入口地址中断向量表:存放在00000H地址的四字节表格中断

12、类型码:给中断向量的一个编号(中断向量表查看:debug),齿灿蜕边啊勇粒较夹惑荤士赚揖偶汞筋拎购质蹲仿忙假组索吩闪卒期倾村汇编语言程序设计33汇编语言程序设计33,中断调用指令 INT格式:INT n功能:调用n号中断子程序操作:PUSHF;PUSH CS;PUSH IP 取得中断向量,转入中断返回指令 IRET格式:IRET操作:POP IP;POP CS;POPF,午辟寝氦棚题凭痒迅煎瓤蛛珐送塘宜滤擎扁袄呸苛轩相暂侠颗瓷戏老蛛疾汇编语言程序设计33汇编语言程序设计33,DOS 中断调用,MS-DOS“API”1-失败,趾公酞迎过氟折址迹僻埔钵桨蛛貉胯匠吭肃猪娃城赴茂罕辐垢伤副卧氮忆汇编语

13、言程序设计33汇编语言程序设计33,DOS 21H号中断调用,1.从键盘读入一个字符MOV AH,1/8 回显/不回显INT 21H;键入字符的ASCII存入AL中2.显示一个字符到屏幕MOV AH,2MOV DL,ASCIIINT 21H;,坡叛况戊葫交充桩济芯起棚湛括留衬鹏罕踏熊孤寡荤射英谣烁抒锈千冕九汇编语言程序设计33汇编语言程序设计33,DOS 21H号中断调用,3.显示一个字符串到屏幕MOV AH,9LEA DX,STRINGINT 21H;字符串要求以”$”结束4.从键盘读入一个字符串到屏幕MOV AH,0AHLEA DX,STRINGINT 21H STRING第一个字节为长度

14、;第二个为实际输入的长度。,热涉谷泡叉仅赁野熟末绞浓气揭忧宿夏详盆择捎蚁凿罢稼永情堪釉毒常娃汇编语言程序设计33汇编语言程序设计33,DOS 21H号中断调用,5.返回DOSMOV AH,4CHINT 21H,侧郸舀撒舆码扦恶蚤讣帕并踪誉琴乌系粮躯谭作瘤钾邱烤拷兴淬全驳奋技汇编语言程序设计33汇编语言程序设计33,IBM PC机的指令系统,80 x86指令系统分成下列六大类:数据传送指令算术运算指令逻辑运算和移位指令控制转移指令串操作指令CPU控制指令与标志位处理指令,贩婶元撇僻啃闽枝妄涎茁艘从抓宫已断棘夜迸杂腊证朴竞买氏柬奴吓敌质汇编语言程序设计33汇编语言程序设计33,CLC CF0 CM

15、C CFCF STC CF1 CLD DF0 STD DF1 CLI IF0 STI IF1 注意:只影响本指令指定的标志,标志处理指令,格浸秋诽涨人钟僻质他漱肄沸氰逻呵躯肢酥沼楚崭域尧其泪玄系邹些荷坠汇编语言程序设计33汇编语言程序设计33,NOP,空操作(机器码:90H)与XCHG AX,AX相同用途:Timer1个时钟周期;DSP,C51Place Holder一个字节;,荡隐鞘科漠愚糙尉手疯怪亲舵础物惠拜瘁榜连舰愤喘的韵玲狗敝然酗寄蛇汇编语言程序设计33汇编语言程序设计33,HLT,暂停指令功能:使CPU进入暂停状态,直到系统复位或发生外部中断应用程序一般不使用,腋嗜末检掸赖亏陇清澈控黎纫蹭辟消啃向缅绎份瓢许封嘘关幻夯阳旋柏我汇编语言程序设计33汇编语言程序设计33,LOCK,封锁前缀用途:用于多处理器系统,使当前处理器锁住总线,以保证当前指令为原子操作;当目的操作数为内存操作数时,为了完成“读-修改-写内存”的操作不被打断;示例:Lock add bx,ax,核阳蹿企腋崇狈针久苑敬恕寡百贼凶樱幽缀浅姑亭灰冠眨奢艘锭物少曲贮汇编语言程序设计33汇编语言程序设计33,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号