版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术第第4 4章章 汇编言语程序设计汇编言语程序设计主要内容主要内容4.1 4.1 分支程序构造分支程序构造4.2 4.2 循环程序构造循环程序构造4.3 4.3 子程序构造子程序构造4.4 4.4 与与C C混合编程混合编程微机原理与接口技术3 分析问题,确定算法分析问题,确定算法 根据算法,画出程序流程图根据算法,画出程序流程图 参照流程图,编写源程序参照流程图,编写源程序 汇编汇编衔接衔接生成可执行程序生成可执行程序程序调试程序调试 汇编言语源程序的设计方法汇编言语源程序的设计方法4.1 分支程序构造微机原理与接口技术4 汇编言语源程序的根本构造汇编言语源程序的根本构造顺序
2、构造顺序构造分支构造分支构造子程序构造子程序构造循环构造循环构造4.1 分支程序构造微机原理与接口技术54.1 4.1 分支程序构造分支程序构造 高级言语采用高级言语采用IF等语句表达条件,并根据条件能等语句表达条件,并根据条件能否成立转向不同的程序分支否成立转向不同的程序分支 汇编言语需求汇编言语需求 首先利用比较首先利用比较CMP、测试、测试TEST、加减运算、逻、加减运算、逻辑运算等影响形状标志的指令构成条件辑运算等影响形状标志的指令构成条件 然后利用条件转移指令判别由标志表达的条件然后利用条件转移指令判别由标志表达的条件,并根据标志形状控制程序转移到不同的程序段并根据标志形状控制程序转
3、移到不同的程序段4.1 分支程序构造微机原理与接口技术64.1.1 4.1.1 无条件转移指令无条件转移指令 程序代码地址程序代码地址 CS:EIP 程序顺序执行,处置器自动增量程序顺序执行,处置器自动增量EIP;程序控;程序控制转移,制转移,EIP随之改动;程序转移到另外的代随之改动;程序转移到另外的代码段,码段,EIP和和CS都改动都改动 控制转移类指令控制转移类指令 改动改动EIP有些也改动有些也改动CS,即改动程序执,即改动程序执行顺序实现程序控制转移的指令行顺序实现程序控制转移的指令4.1 分支程序构造微机原理与接口技术71. 转移范围转移范围 段内转移近转移段内转移近转移 在当前代
4、码段范围内的程序转移在当前代码段范围内的程序转移 不更改不更改CS,只改动,只改动EIP 短转移短转移Short:转移范围在:转移范围在127-128字节字节 段间转移远转移段间转移远转移 从当前代码段跳转到另一个代码段从当前代码段跳转到另一个代码段 需求更改需求更改CS和和EIP 48位远转移位远转移FAR32,32位远转移位远转移FAR164.1 分支程序构造微机原理与接口技术82. 指令寻址方式指令寻址方式 相对寻址方式相对寻址方式 目的地址转移后的目的地址转移后的EIP当前当前EIP位移量位移量 直接寻址方式直接寻址方式 目的地址转移后的目的地址转移后的CS和和EIP指令操作数指令操作
5、数 间接寻址方式间接寻址方式 存放器间接寻址:用存放器保管目的地址存放器间接寻址:用存放器保管目的地址 存储器间接寻址:用存储单元保管目的地址存储器间接寻址:用存储单元保管目的地址4.1 分支程序构造微机原理与接口技术93. 无条件转移指令无条件转移指令 JMP 无条件改动程序执行顺序,相当于无条件改动程序执行顺序,相当于goto语句语句 指令格式指令格式 JMP label ;程序转向程序转向label标号指定的地址标号指定的地址 ;段内相对寻址,段间直接寻址段内相对寻址,段间直接寻址 JMP reg32/reg16 ;程序转向存放器指定的地址程序转向存放器指定的地址 ;存放器间接寻址存放器
6、间接寻址 JMP mem32/mem16 ;程序转向存储单元指定的地程序转向存储单元指定的地址址 ;存储器间接寻址存储器间接寻址4.1 分支程序构造微机原理与接口技术10 JMP指令的指令的4种类型种类型 段内转移、相对寻址段内转移、相对寻址 标号指明目的地址,指令代码包含位移量标号指明目的地址,指令代码包含位移量 段内转移、间接寻址段内转移、间接寻址 通用存放器或主存单元包含目的指令偏移地址通用存放器或主存单元包含目的指令偏移地址 段间转移、直接寻址段间转移、直接寻址 标号包含目的指令的段地址和偏移地址标号包含目的指令的段地址和偏移地址 段间转移、间接寻址段间转移、间接寻址 32位段用位段用
7、3字存储单元包含目的地址字存储单元包含目的地址 16位段用双字存储单元包含目的地址位段用双字存储单元包含目的地址4.1 分支程序构造微机原理与接口技术11例例4.1 无条件转移程序无条件转移程序 .datanvardword ?.codestart:jmp labl1noplabl1:jmp near ptr labl2noplabl2:mov eax, offset labl3 jmp eax noplabl3:mov eax,offset labl4mov nvar, eaxjmp nvarnoplabl4:exit 0end start4.1 分支程序构造微机原理与接口技术124.1.2
8、 4.1.2 条件转移指令条件转移指令 指令格式指令格式 JCC LABELLABEL表示目的地址,采用段内相对寻址表示目的地址,采用段内相对寻址32位位IA-32处置器:到达处置器:到达32位的全偏移量位的全偏移量16位位80 x86处置器:处置器:-128+127间的短转移间的短转移条件转移指令不影响标志,但要利用标志条件转移指令不影响标志,但要利用标志CC表示判别条件,表示判别条件,16种、两类种、两类单个标志形状作为条件单个标志形状作为条件两数大小关系作为条件两数大小关系作为条件4.1 分支程序构造微机原理与接口技术131. 单个标志形状作为条件的条件转移指令单个标志形状作为条件的条件
9、转移指令 JZ(JE)和和JNZ(JNE):利用零位标志:利用零位标志ZF 判别结果是零相等还是非零不等判别结果是零相等还是非零不等 JS和和JNS:利用符号标志:利用符号标志SF 判别结果是负还是正判别结果是负还是正 JO和和JNO:利用溢出标志:利用溢出标志OF 判别结果是溢出还是没有溢出判别结果是溢出还是没有溢出 JP(JPE)和和JNP(JPO):利用奇偶标志:利用奇偶标志PF 判别结果低字节判别结果低字节“1的个数是偶数还是奇数的个数是偶数还是奇数 JC和和JNC:利用进位标志:利用进位标志CF 判别结果是有进位为判别结果是有进位为1还是无进位为还是无进位为04.1 分支程序构造例例
10、4-2 个数折半程序个数折半程序14 .code mov eax, 885 ; 假设一个数据假设一个数据 shr eax,1 ; 数据右移进展折半数据右移进展折半 jnc goeven ; 余数为余数为0,即,即CF0条件成立,条件成立,转移转移 add eax,1 ;余数为余数为1,即,即CF1,进展加,进展加1操操作作goeven:call dispuid; 显示结果显示结果 4.1 分支程序构造微机原理与接口技术15例例4-3 位测试程序位测试程序 ; 数据段数据段no_msgbyte Not Ready!,0yes_msgbyte Ready to Go!,0; 代码段代码段mov e
11、ax,56h; 假设一个数据假设一个数据test eax,02h; 测试测试D1位位(D11,其他位为,其他位为0)jz nom ; D10条件成立,转移条件成立,转移mov eax, offset yes_msg ; D11,显示预备好,显示预备好jmp done; 跳转过另一个分支体!跳转过另一个分支体!nom:mov eax, offset no_msg; 显示没有预备好显示没有预备好done:call dispmsg4.1 分支程序构造微机原理与接口技术16例例4-4 奇偶校验程序奇偶校验程序call readc; 键盘输入,键盘输入, AL前往值前往值call dispcrlf; 回
12、车换行用于分隔回车换行用于分隔call dispbb; 以二进制方式显示数据以二进制方式显示数据call dispcrlf; 回车换行用于分隔回车换行用于分隔and al,7fh ; 最高位置最高位置“0、其他位不变、其他位不变 ; 同时标志同时标志PF反映反映“1的个数的个数jnp next ; 个数为奇数,不需处置,转移个数为奇数,不需处置,转移or al,80h ; 个数为偶数,最高位置个数为偶数,最高位置“1、其他位不、其他位不变变 next:call dispbb ; 显示含校验位的数据显示含校验位的数据4.1 分支程序构造微机原理与接口技术172. 两数大小关系作为条件的条件转移指
13、令两数大小关系作为条件的条件转移指令 无符号数用高无符号数用高Above、低、低Below 低于不高于等于:低于不高于等于:JBJNAE 不低于高于等于:不低于高于等于:JNBJAE 低于等于不高于:低于等于不高于:JBEJNA 不低于等于高于:不低于等于高于:JNBEJA 有符号数用大有符号数用大Greater、小、小Less 小于不大于等于:小于不大于等于:JLJNGE 不小于大于等于:不小于大于等于:JNLJGE 小于等于不大于:小于等于不大于:JLEJNG 不小于等于大于:不小于等于大于:JNLEJG4.1 分支程序构造微机原理与接口技术18例例4-5 数据比较程序数据比较程序4.1
14、分支程序构造微机原理与接口技术194.1 分支程序构造微机原理与接口技术204.1 分支程序构造微机原理与接口技术214.1.3 4.1.3 单分支构造单分支构造 只需一个分支的程序只需一个分支的程序 类似高级言语的类似高级言语的IF-THEN语句构造语句构造 留意采用正确的条件转移指令留意采用正确的条件转移指令 当条件满足成立,发生转移,跳过分支体当条件满足成立,发生转移,跳过分支体 条件不满足,顺序向下执行分支体条件不满足,顺序向下执行分支体 条件转移指令与高级言语的条件转移指令与高级言语的IF语句正好相反语句正好相反 IF语句是条件成立,执行分支体语句是条件成立,执行分支体4.1 分支程
15、序构造微机原理与接口技术22 单分支构造的流程图单分支构造的流程图4.1 分支程序构造微机原理与接口技术23例例4-6 求绝对值程序求绝对值程序; 代码段代码段call readsid; 输入一个有符号数,从输入一个有符号数,从EAX前往值前往值cmp eax,0; 比较比较EAX与与0jge nonneg; 条件满足:条件满足:EAX0,转移,转移neg eax; 条件不满足:条件不满足:EAX0,为负数,为负数; 需求补得正值需求补得正值nonneg:call dispuid;分支终了,显示结果分支终了,显示结果4.1 分支程序构造微机原理与接口技术24例例4-7 字母判别程序字母判别程序
16、call readc; 输入一个字符,从输入一个字符,从AL前往值前往值cmp al,A; 与大写字母与大写字母A比较比较jb done; 比大写字母比大写字母A小,不是大写字母,转移小,不是大写字母,转移cmp al,Z; 与大写字母与大写字母Z比较比较ja done; 比大写字母比大写字母Z大,不是大写字母,转移大,不是大写字母,转移or al,20h; 转换为小写转换为小写call dispcrlf ; 回车换行回车换行call dispc; 显示小写字母显示小写字母done: 4.1 分支程序构造4.1.4 4.1.4 双分支构造双分支构造微机原理与接口技术25 程序构造有两个分支,条
17、件为真执行一个分支;条件程序构造有两个分支,条件为真执行一个分支;条件为假,执行另一个分支为假,执行另一个分支 相当于高级言语的相当于高级言语的IF-THEN-ELSE语句语句 顺序执行的分支体顺序执行的分支体1最后一定要有一条最后一定要有一条JMP指令跳过指令跳过分支体分支体2 JMP指令必不可少,实现终了前一个分支回到共同的指令必不可少,实现终了前一个分支回到共同的出口作用出口作用 双分支构造有时可以改动为单分支构造双分支构造有时可以改动为单分支构造 事先执行其中一个分支事先执行其中一个分支(选择出现概率较高的分支选择出现概率较高的分支) 4.1 分支程序构造微机原理与接口技术26 双分支
18、构造的流程图双分支构造的流程图4.1 分支程序构造微机原理与接口技术27例例4-8 显示数据最高位程序显示数据最高位程序; 数据段数据段dvardword 0bd630422h; 假设一个数据假设一个数据; 代码段代码段mov ebx,dvarshl ebx,1 ; EBX最高位移入最高位移入CF标志标志jc one ; CF1,即最高位为,即最高位为1,转移,转移mov al,0 ; CF0,即最高位为,即最高位为0:AL0jmp two ; 一定要跳过另一个分支一定要跳过另一个分支one:mov al, 1 ; AL1two:call dispc ; 显示显示 4.1 分支程序构造微机原理
19、与接口技术28 例例4-9 有符号数运算溢出程序有符号数运算溢出程序; 数据段数据段dvar1dword 1234567890; 假设两个数据假设两个数据dvar2dword -999999999dvar3dword ?okmsgbyte Correct!,0; 正确信息正确信息errmsgbyte ERROR ! Overflow!,0; 错误信息错误信息; 代码段代码段mov eax,dvar1 sub eax,dvar2; 求差求差jo error; 有溢出,转移有溢出,转移mov dvar3,eax; 无溢出,保管差值无溢出,保管差值mov eax,offset okmsg ; 显示正
20、确显示正确jmp disperror:mov eax,offset errmsg ; 显示错误显示错误disp:call dispmsg 4.1 分支程序构造主要内容主要内容4.1 4.1 分支程序构造分支程序构造4.2 4.2 循环程序构造循环程序构造4.3 4.3 子程序构造子程序构造4.4 4.4 与与C C混合编程混合编程微机原理与接口技术30 三个部分组成:三个部分组成: 循环初始循环初始为开场循环预备必要的条件,如循环次为开场循环预备必要的条件,如循环次数、循环体需求的初始值等;数、循环体需求的初始值等; 循环体循环体反复执行的程序代码,其中包括对循环条反复执行的程序代码,其中包括
21、对循环条件的修正等;件的修正等; 循环控制循环控制判别循环条件能否成立,决议能否继续判别循环条件能否成立,决议能否继续循环循环 “先判别、后循环的循环程序构造先判别、后循环的循环程序构造 对应高级言语的对应高级言语的WHILE语句语句 “先循环、后判别的循环程序构造先循环、后判别的循环程序构造 对应高级言语的对应高级言语的DO语句语句4.2 循环程序构造微机原理与接口技术31 循环程序构造的流程图循环程序构造的流程图4.2 循环程序构造 先循环后判别先循环后判别 先判别后循环先判别后循环微机原理与接口技术324.2.1 4.2.1 循环指令循环指令 LOOP label ;ECXECX1;假设
22、;假设ECX0,循环到,循环到LABEL ;否那么,顺序执行否那么,顺序执行 JECXZ label ;ECX0,转移;否那么顺序执行,转移;否那么顺序执行 目的地址采用相对短转移目的地址采用相对短转移 实地址存储模型运用实地址存储模型运用CX作为计数器作为计数器DEC ECXJNZ labelCMP ECX,0JZ label4.2 循环程序构造微机原理与接口技术334.2.2 4.2.2 计数控制循环计数控制循环经过次数控制循环经过次数控制循环LOOP、LECXZ指令属于计数控制指令属于计数控制常见是常见是“先循环、后判别循环构造先循环、后判别循环构造计数可以减量进展,即减到计数可以减量进
23、展,即减到0终了终了计数可以增量进展,即到达规定值终了计数可以增量进展,即到达规定值终了循环程序构造的关键是如何控制循环循环程序构造的关键是如何控制循环4.2 循环程序构造微机原理与接口技术34 例例4-10 数组求和程序数组求和程序mov ecx, lengthof array ; ECX数组元素个数数组元素个数xor eax, eax; 求和初值为求和初值为0mov ebx, eax; 数组指针为数组指针为0again:add eax, arrayebx*(type array) ; 求和求和 inc ebx; 指向下一个数组元素指向下一个数组元素loop againmov sum,eax
24、; 保管结果保管结果call dispsid; 显示结果显示结果4.2 循环程序构造微机原理与接口技术35例例4-11 简单加密解密程序简单加密解密程序4.2 循环程序构造微机原理与接口技术364.2 循环程序构造微机原理与接口技术374.2 循环程序构造解密程序解密程序:微机原理与接口技术384.2.3 4.2.3 条件控制循环条件控制循环 根据条件决议能否进展循环根据条件决议能否进展循环 需求运用有条件转移指令实现需求运用有条件转移指令实现 多见多见“先判别、后循环构造先判别、后循环构造 先判别的条件控制循环程序先判别的条件控制循环程序 类似双分支构造类似双分支构造 主要分支需求反复执行多
25、次主要分支需求反复执行多次 JMP的目的位置是循环开场的目的位置是循环开场 另一个分支用于跳出这个循环另一个分支用于跳出这个循环 先循环的条件控制循环程序先循环的条件控制循环程序 类似单分支构造,循环体就是分支体类似单分支构造,循环体就是分支体 顺序执行就跳出循环顺序执行就跳出循环4.2 循环程序构造微机原理与接口技术39例例4-12 字符个数统计程序字符个数统计程序4.2 循环程序构造微机原理与接口技术40 例例4-13 字符剔除程序字符剔除程序4.2 循环程序构造微机原理与接口技术414.2 循环程序构造微机原理与接口技术42作作 业业1.从键盘输入一个字符串从键盘输入一个字符串“ABCd
26、efgh,假设是小写字母转换为大写,假设是小写字母转换为大写,是大写字母不做处置,分别显示转换前后的字符串,是大写字母不做处置,分别显示转换前后的字符串2.编写程序,把变量编写程序,把变量VAR1和和VAR2中较大者存入中较大者存入VAR3;假设两者相等假设两者相等,那么把其中之一存入,那么把其中之一存入VAR3中。假设变量存放的是中。假设变量存放的是8位有符号数位有符号数3.设变量设变量VARX为有符号为有符号16位数,将它的符号形状保管在位数,将它的符号形状保管在signX中,即中,即假设变量大于等于假设变量大于等于0,保管,保管0;假设小于;假设小于0,保管,保管14.VARX,VARY
27、和和VARZ是是3个有符号个有符号16进制数,编写一个比较相等关进制数,编写一个比较相等关系的程序:系的程序:5.1假设假设3个数都不相等,那么显示个数都不相等,那么显示06.2假设假设3个数中有两个相等,那么显示个数中有两个相等,那么显示17.3假设假设3个数都相等,那么显示个数都相等,那么显示28.求存储单元求存储单元00405000开场的一个开场的一个64K存储区域中共有多少个空格存储区域中共有多少个空格主要内容主要内容4.1 4.1 分支程序构造分支程序构造4.2 4.2 循环程序构造循环程序构造4.3 4.3 子程序构造子程序构造4.4 4.4 与与C C混合编程混合编程微机原理与接
28、口技术44 经常用到的运用问题编写成一个通用子程序经常用到的运用问题编写成一个通用子程序 大型处置过程分解成可以处理的模块大型处置过程分解成可以处理的模块 运用子程序可以运用子程序可以 使程序的构造更为清楚使程序的构造更为清楚 程序的维护更为方便程序的维护更为方便 有利于大程序开发时的多个程序员分工协作有利于大程序开发时的多个程序员分工协作子程序子程序Subroutine函数函数Function过程过程Procedure4.3 子程序构造微机原理与接口技术454.3.1 4.3.1 子程序指令子程序指令例例 4-14 子程序调用程序子程序调用程序; 代码段,主程序代码段,主程序mov eax,
29、1mov ebp,5call subpretp1:mov ecx,3retp2:mov edx,4call disprd4.3 子程序构造微机原理与接口技术46; 子程序子程序subpproc ; 过程定义,过程名为过程定义,过程名为subppush ebpmov ebp, espmov esi, ebp+4; ESICALL下条指令下条指令(标号标号RETP1)偏移地偏移地址址 mov edi, offset retp2 ; EDI标号标号RETP2的偏移地的偏移地址址 mov ebx, 2 pop ebp ; 弹出堆栈,坚持堆栈平衡弹出堆栈,坚持堆栈平衡 ret ; 子程序前往子程序前往s
30、ubp endp ; 过程终了过程终了4.3 子程序构造微机原理与接口技术47 子程序调用指令子程序调用指令 CALLCALL label; EIP=label指定的子程序指定的子程序 ; ESP=ESP-4(2) ; ESP=REPT1 子程序前往指令子程序前往指令 RET RET ; EIP=REPT1 ; ESP=ESP+4(2) 子程序定义伪指令对子程序定义伪指令对 PROC ENDP4.3 子程序构造微机原理与接口技术48CALL label主程序主程序RET子程序子程序回到回到CALL指令指令后第一条指令处后第一条指令处4.3 子程序构造微机原理与接口技术494.3.2 4.3.2
31、 子程序设计子程序设计 子程序的编写方法与主程序一样子程序的编写方法与主程序一样 子程序编写需求留意的问题:子程序编写需求留意的问题: 利用过程定义,获得子程序名和调用属性利用过程定义,获得子程序名和调用属性 RET指令前往主程序,指令前往主程序,CALL指令调用子程序指令调用子程序 压入和弹出操作要成对运用,坚持堆栈平衡压入和弹出操作要成对运用,坚持堆栈平衡 开场维护存放器,前往前相应恢复开场维护存放器,前往前相应恢复 安排在代码段的主程序之外安排在代码段的主程序之外 子程序允许嵌套和递归子程序允许嵌套和递归最好有完好的注释最好有完好的注释难点是参数传送难点是参数传送4.3 子程序构造微机原
32、理与接口技术50 例例4-15 十六进制显示程序十六进制显示程序EAX=1234ABCDH4.3 子程序构造微机原理与接口技术514.3 子程序构造微机原理与接口技术52 十六进制转换为十六进制转换为ASCII码的另一种方法:码的另一种方法:4.3 子程序构造534.3.3 4.3.3 参数传送参数传送 主程序与子程序间经过参数传送建立联络主程序与子程序间经过参数传送建立联络 入口参数入口参数(输入参数输入参数):主程序:主程序子程序子程序 出口参数出口参数(输出参数输出参数):子程序:子程序主程序主程序 参数的详细内容参数的详细内容 数据本身传送数值数据本身传送数值 数据的存储地址传送地址,
33、传送援用数据的存储地址传送地址,传送援用 参数传送方法参数传送方法 存放器存放器 变量变量 堆栈堆栈微机原理与接口技术4.3 子程序构造微机原理与接口技术541. 存放器传送参数存放器传送参数最简单和常用的参数传送方法最简单和常用的参数传送方法把参数存于商定的存放器把参数存于商定的存放器 少量数据直接传送数值少量数据直接传送数值 大量数据只能传送地址大量数据只能传送地址带有出口参数的存放器不能维护和恢复带有出口参数的存放器不能维护和恢复带有入口参数的存放器可以维护、也可以不维护带有入口参数的存放器可以维护、也可以不维护,但最好可以坚持一致,但最好可以坚持一致4.3 子程序构造微机原理与接口技术
34、55例例4-16 有符号十进制数显示程序有符号十进制数显示程序数据数据0?显示显示“0数据数据0?显示显示“-求数据绝对值求数据绝对值数据除以数据除以16,余数加,余数加30h保管保管商商0?从高位依次显示各位数字从高位依次显示各位数字终了终了YYYNNN微机原理与接口技术564.3 子程序构造微机原理与接口技术574.3 子程序构造微机原理与接口技术584.3 子程序构造微机原理与接口技术594.3 子程序构造微机原理与接口技术602. 共享变量传送参数共享变量传送参数子程序和主程序运用同一个变量名存取数据子程序和主程序运用同一个变量名存取数据假设变量定义和运用不在同一个程序模块中,需假设变
35、量定义和运用不在同一个程序模块中,需求利用求利用PUBLIC、EXTREN声明声明共享变量传送参数,子程序的通用性较差共享变量传送参数,子程序的通用性较差适宜在多个程序段间、尤其在不同的程序模块间适宜在多个程序段间、尤其在不同的程序模块间传送数据传送数据4.3 子程序构造微机原理与接口技术61 例例4-17 有符号十进制数输入程序有符号十进制数输入程序4.3 子程序构造微机原理与接口技术624.3 子程序构造微机原理与接口技术634.3 子程序构造微机原理与接口技术644.3 子程序构造微机原理与接口技术654.3 子程序构造微机原理与接口技术664.3 子程序构造微机原理与接口技术673.
36、堆栈传送参数堆栈传送参数主程序将入口参数压入堆栈,子程序从堆栈中取主程序将入口参数压入堆栈,子程序从堆栈中取出参数出参数出口参数通常不运用堆栈传送出口参数通常不运用堆栈传送高级言语进展函数调用时提供的参数,本质也利高级言语进展函数调用时提供的参数,本质也利用堆栈传送用堆栈传送采用堆栈传送参数是程式化的,它是编译程序处采用堆栈传送参数是程式化的,它是编译程序处置参数传送、以及汇编言语与高级言语混合编程置参数传送、以及汇编言语与高级言语混合编程时的常规方法时的常规方法4.3 子程序构造微机原理与接口技术68例例4-18 计算有符号数平均值程序计算有符号数平均值程序4.3 子程序构造微机原理与接口技
37、术694.3 子程序构造微机原理与接口技术704.3 子程序构造微机原理与接口技术71利用堆栈传送参数利用堆栈传送参数4.3 子程序构造微机原理与接口技术724.3.4 4.3.4 程序模块程序模块程序分段、子程序等是进展程序模块化程序分段、子程序等是进展程序模块化开发大型程序时采用的方法开发大型程序时采用的方法 子程序模块子程序模块 子程序库子程序库 库文件包含库文件包含 宏汇编宏汇编 源文件包含源文件包含4.3 子程序构造微机原理与接口技术731. 子程序模块子程序模块 子程序单独编写,汇编构成目的模块子程序单独编写,汇编构成目的模块OBJ文件文件 衔接时输入子程序模块文件名衔接时输入子程
38、序模块文件名 用共用伪指令用共用伪指令PUBLIC和外部伪指令和外部伪指令EXTERN声明声明 PUBLIC 标识符标识符 ,标识符标识符 ;定义标识符的模块运用定义标识符的模块运用 EXTERN 标识符标识符:类型类型 ,标识符标识符:类型类型 ;调用标识符的模块运用调用标识符的模块运用 子程序在代码段,与主程序文件采用一样的存储模型,子程序在代码段,与主程序文件采用一样的存储模型,没有开场执行和终了执行点没有开场执行和终了执行点 处置好子程序与主程序之间的参数传问题处置好子程序与主程序之间的参数传问题4.3 子程序构造微机原理与接口技术74例例4-19 数据输入输出程序数据输入输出程序4.
39、3 子程序构造微机原理与接口技术754.3 子程序构造微机原理与接口技术764.3 子程序构造微机原理与接口技术774.3 子程序构造微机原理与接口技术782. 子程序库子程序库 子程序库:一致管理子程序模块子程序库:一致管理子程序模块 遵照更加严厉的子程序模块要求遵照更加严厉的子程序模块要求 子程序文件编写完成、汇编构成目的模块子程序文件编写完成、汇编构成目的模块 利用库管理工具程序利用库管理工具程序LIB.EXE把子程序模块逐个把子程序模块逐个参与到子程序库参与到子程序库.LIB 运用子程序库:在衔接主程序模块时提供子程序运用子程序库:在衔接主程序模块时提供子程序库文件名库文件名4.3 子
40、程序构造LIB 库文件名库文件名 + 子程序目的文件名子程序目的文件名微机原理与接口技术794.3 子程序构造微机原理与接口技术80微机原理与接口技术81微机原理与接口技术823. 库文件包含库文件包含 直接在主程序源文件中用库文件包含伪指令直接在主程序源文件中用库文件包含伪指令INCLUDELIB阐明阐明 不用在衔接时输入库文件名不用在衔接时输入库文件名INCLUDELIB 文件名文件名 子程序库文件名要符合操作系统规范子程序库文件名要符合操作系统规范 必要时含有途径,用于指明文件的存储位置必要时含有途径,用于指明文件的存储位置 假设没有途径名,汇编程序将在默许目录、当前假设没有途径名,汇编
41、程序将在默许目录、当前目录和指定目录下寻觅目录和指定目录下寻觅 4.3 子程序构造微机原理与接口技术834. 宏汇编宏汇编 宏宏Macro:具有宏名的一段汇编语句序列:具有宏名的一段汇编语句序列 宏需求先定义宏需求先定义 宏名宏名 MACRO 形参表形参表;宏定义体宏定义体ENDM 然后程序中进展宏调用然后程序中进展宏调用 宏名宏名 实体参数实体参数 在汇编时,宏指令被汇编程序用宏定义的代码序列在汇编时,宏指令被汇编程序用宏定义的代码序列替代,实现宏展开替代,实现宏展开4.3 子程序构造微机原理与接口技术84宏定义宏定义WriteStringmacro msgpush eaxlea eax,m
42、sgcall dispmsgpop eaxendm 宏展开宏展开push eaxpush eaxlea eax,msglea eax,msgcall dispmsgcall dispmsgpop eaxpop eax 宏调用宏调用WriteString msgWriteString msg宏汇编例如宏汇编例如4.3 子程序构造微机原理与接口技术855. 源文件包含源文件包含 INCLUDE 文件名文件名 将将INCLUDE伪指令指定的文本文件内容插入源程序伪指令指定的文本文件内容插入源程序 可以包含任何文本文件可以包含任何文本文件 一些常用的或有价值的宏定义存放在一些常用的或有价值的宏定义存放
43、在.MAC宏定义文宏定义文件件 各种常量定义、声明语句等组织在各种常量定义、声明语句等组织在.INC包含文件包含文件 常用的子程序构成常用的子程序构成.ASM汇编言语源文件汇编言语源文件 利用利用INCLUDE伪指令包含其他文件,其本质依然是一伪指令包含其他文件,其本质依然是一个源程序,只不过是分在了几个文件书写个源程序,只不过是分在了几个文件书写 组合两种文件包含、以及宏汇编等方法,可以精简程组合两种文件包含、以及宏汇编等方法,可以精简程序框架、简化程序设计序框架、简化程序设计4.3 子程序构造微机原理与接口技术86IO32.INC4.3 子程序构造主要内容主要内容4.1 4.1 分支程序构
44、造分支程序构造4.2 4.2 循环程序构造循环程序构造4.3 4.3 子程序构造子程序构造4.4 4.4 与与C C混合编程混合编程微机原理与接口技术88 软件开发通常采用高级言语,以提高开发效率软件开发通常采用高级言语,以提高开发效率 某些部分需求利用汇编言语,以提高程序的运转效率某些部分需求利用汇编言语,以提高程序的运转效率 汇编言语的优点:开发的程序占用存储空间小、运转速汇编言语的优点:开发的程序占用存储空间小、运转速度快等度快等 汇编言语的缺陷:与机器亲密相关、移植性差,编程烦汇编言语的缺陷:与机器亲密相关、移植性差,编程烦琐、对汇编言语程序员要求较高琐、对汇编言语程序员要求较高 混合
45、编程:汇编言语与高级言语、或高级言语间,经过混合编程:汇编言语与高级言语、或高级言语间,经过相互调用、参数传送、共享数据构造和数据信息而构成相互调用、参数传送、共享数据构造和数据信息而构成程序的过程程序的过程 汇编言语与汇编言语与C和和C+言语的混合编程言语的混合编程 嵌入汇编嵌入汇编 模块衔接模块衔接MASM 6.15和和Visual C+ 6.04.4 与C+混合编程微机原理与接口技术894.5.1 4.5.1 嵌入汇编嵌入汇编 嵌入汇编嵌入汇编内嵌汇编内联汇编行内内嵌汇编内联汇编行内in-line汇编汇编 直接在直接在C和和C+言语的源程序中插入汇编言语指令言语的源程序中插入汇编言语指令 运用运用“_ _asm关键字指示嵌
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃利鸿新材料科技有限公司招聘33人笔试参考题库附带答案详解
- 2025湖南兴湘资产经营管理集团有限公司招聘11人笔试参考题库附带答案详解
- 2025浙江钱江生物化学股份有限公司招聘笔试及复审对象笔试参考题库附带答案详解
- 2025浙江温州市平阳县城发集团下属房开公司招聘项目制员工(9月27日)拟聘用(一)笔试参考题库附带答案详解
- 2025浙江嘉兴平湖市国有企业招聘拟录用人员(一)笔试参考题库附带答案详解
- 2026及未来5年中国2-甲氧基-5-硝基苯酚钠盐市场数据分析及竞争策略研究报告
- 四川九洲电器集团有限责任公司招聘天线工程师(校招)等岗位3人笔试历年备考题库附带答案详解
- 陕西省2025陕西省科学技术厅直属事业单位引进高层次人才招聘(2人)笔试历年参考题库典型考点附带答案详解
- 覃塘区2025广西贵港市覃塘区统计局招聘编外人员1人笔试历年参考题库典型考点附带答案详解
- 盘锦市2025年辽宁盘锦市市场监管事务服务中心(盘锦市消费者协会办公室)面向社会笔试历年参考题库典型考点附带答案详解
- 车间划线及颜色标准
- 济南版七年级生物下册期中试卷(含答案)
- DB33-T 2360-2021 彩色森林营建技术规程
- 急慢性肾小球肾炎病人的护理课件
- 人教版初中中考物理电学专题试题及答案详解
- 17G911 钢结构施工安全防护
- 招标控制价编制实例
- 骨关节炎药物治疗进展
- ISO-TS16949:质量管理体系中英文对照版
- GA 676-2007警用服饰刺绣软肩章
- 四川省成都市《综合应用能力测试》事业单位国考真题
评论
0/150
提交评论