- 1、本文档共37页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3. 寄存器(相对)寻址/基址寻址/变址寻址 例: .data arrayB BYTE 10h,20h,30h .code mov esi,0 mov al,[arrayB + esi] ; ? mov al,arrayB[esi] ; ? mov esi,OFFSET arrayB mov al,[esi] ; ? mov al,[esi+1] ; ? mov al,[esi+2] ; ? Array 定义为 word? 3. (带位移量的)基址变址寻址 地址可以使用任意两个通用寄存器的组合 mov edi,[ebx+esi] mov edi,[ebx][esi] ; 基址变址寻址,功能:EDI=DS:[EBX+ESI] mov eax,[ebx+edx+80h] mov eax,80h[ebx+edx] mov eax,80h[ebx][edx] ;相对基址变址寻址 功能:EAX=DS:[EBX+EDX+80H] 带位移量的基址比例因子变址 寄存器乘以2,4或8 比例1、2、4和8对应8、16、32和64位数据的字节个数,便于以数组元素为单位寻址相应数据 mov eax,[ebx*4] ; 带比例的基址寻址 mov eax,[esi*2+80h] ; 带比例的相对变址寻址 mov eax,[ebx+esi*4] ; 带比例的基址变址寻址 mov eax,[ebx+esi*8-80h] ; 带比例的相对基址变址寻址 ESP寄存器不能乘以比例系数 INCLUDE Irvine32.inc .data count dword,9abcdef0h,0,0,3721h .code start: mov ebx,offset count ; EBX=count变量的有效地址(立即数寻址) mov esi,0 mov ecx,lengthof count K1: mov eax,[ebx+esi*4] inc esi loop k1 mov esi,0 mov ecx,lengthof count K2: mov eax,count[esi*4] inc esi loop k2 exit end start (五)JMP和LOOP指令 控制转移或分支是一种改变程序执行顺序的方法。 控制转移可分为两种: 无条件转移:以JMP指令为例 条件转移:以LOOP指令为例 (五)JMP和LOOP指令 1. JMP指令 例:创建一个循环 top: . . . jmp top ; 死循环 (五)JMP和LOOP指令 2. LOOP指令 格式:LOOP 目的地址/标号 执行过程: 在实地址模式下,用做默认循环计数器的是CX而不是ECX。 在任何模式下,LOOPD指令都使用ECX作为循环计数器;LOOPW都使用CX作为循环计数器。 (五)JMP和LOOP指令 2. LOOP指令 例: mov ax,0 mov ecx,5 L1: inc ax loop L1 循环结束时,AX=? ECX=? (五)JMP和LOOP指令 2. LOOP指令 循环的目的地址与当前地址只能在相距-128到+127字节的范围之内。机器指令平均3字节左右,因此一个循环平均最多只能包含大约42条指令。 循环的嵌套 (五)JMP和LOOP指令 3. 例子:整数数组求和 数组元素的求和 (SumArray.asm) ; This program sums an array of words. INCLUDE Irvine32.inc .data intarray WORD 100h,200h,300h,400h .code main PROC mov edi,OFFSET intarray ; address of intarray mov ecx,LENGTHOF intarray ; loop counter mov ax,0 ; zero the accumulator L1: add ax,[edi] ; add an integer add edi,TYPE intarray ; point to next integer loop L1 ; repeat until ECX = 0 INVOKE ExitProcess,0 main ENDP END main (五)JMP和LOOP指令 4. 例子:拷贝字符串 TITLE Copying a String
您可能关注的文档
- 2016年深圳高三一模理综解剖.doc
- 1.2晶闸管技巧.ppt
- 1.2了解碳钢的力学性能技巧.ppt
- 11-2毕奥-萨伐尔定律课题.ppt
- 4-3.微量元素和Pearce图解选编.ppt
- 11-5重积分习题课课题.ppt
- 11-10光的偏振性马吕斯定律课题.ppt
- 1.2四则运算(有括号)技巧.ppt
- 1.2太阳对地球的影响技巧.ppt
- 1.2有理数—绝对值1技巧.ppt
- 2025江浙沪居民睡眠健康小调研报告.pdf
- 毕业论文的开题报告范文.docx
- 团委活动方案(拓展).docx
- 汽车智能驾驶行业深度报告:端到端与AI共振,智驾平权开启新时代.pdf
- 小核酸行业深度:技术平台和适应症不断验证,迎来销售和临床密集兑现期-华福证券-2025.3.31-65页.docx
- 医药生物行业医疗AI专题报告二多组学篇AI技术驱动精准诊断实现重要突破-25031440页.docx
- CXO行业系列报告三寒冬已过行业需求逐步回暖-25031430页.docx
- 全国租赁市场报告2025年3月_可有哪些信誉好的足球投注网站.pdf
- 玩具行业“情绪经济”专题:创新玩法+IP赋能,重新定义玩具-华鑫证券-2025.docx
- 医疗保健行业PCAB抑制剂药物深度报告抑酸药物市场空间广阔PCAB抑制剂大有可为-25.pdf
文档评论(0)