汇编语言程序设计05IRVINE链接库与条件处理.ppt
《汇编语言程序设计05IRVINE链接库与条件处理.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计05IRVINE链接库与条件处理.ppt(35页珍藏版)》请在三一办公上搜索。
1、汇编语言程序设计,_05_IRVINE函数库与条件处理大连理工大学软件学院_朱明2009年5月31日_ V1.1,第四章提问,当使用LOOP执行作为循环时,哪一个寄存器作为计数器使用?当该寄存器的值为多少时LOOP不再跳转?以下几段代码分别是什么形式的寻址?堆栈中数据的操作原则是什么?PUSHFD、PUSHAD分别对堆栈执行什么操作?在程序执行时的调用过程使用什么指令?该指令会将什么参数压入到堆栈中?,汇编语言程序设计-朱明,2,moval,value1,movesi,OFFSET value1moveax,esi,movesi,2moveax,valueesi,movesi,4movebx,
2、value+esi,前章回顾,前章中的所讲述的部分内容 LOOP循环指令和JMP跳转指令 操作数间接寻址和变址操作数寻址 irvine链接库中少部分过程的介绍 前章中还讲述了和过程相关的内容 过程的定义、过程的书写方法 过程的调用、过程的返回 过程调用中参数的传递方法 IA-32处理器对于堆栈操作相关指令 过程化的程序设计方法和流程,汇编语言程序设计-朱明,3,前章回顾,外部链接库,IRVINE以外部链接库的形式存在 在链接阶段,链接库中的内容和源代码经过汇编生成的目标文件被链接在一起(可以通过反汇编观察)IRVINE链接库提供了大量常用的过程 DumpRegs:以十六进制的形式显示个寄存器的
3、值以及EFLAGS中的各个标志位的值 WriteString:在标准输出上输出以空字符结尾的字符串 WriteInt:在标准输出上输出10进制的32位有符号数 ReadInt:从键盘读取10进制的32位有符号数 Clrscr:清除标准输出的内容并重新定位光标 Clrf:在标准输出上输出回车符和换行符,汇编语言程序设计-朱明,4,Section 1,问题处理,整数求和问题:写一个程序,要求用户从键盘输入3个32位整数,保存在数组中,并计算数组内元素的和并显示在屏幕上,汇编语言程序设计-朱明,5,代码框架,;-main PROC;-exitmain ENDP,;-GetNum PROC;-exit
4、main ENDP,;-ArraySum PROC;-exitmain ENDP,;-DispSum PROC;-exitmain ENDP,Section 1,;-main PROC;-exitmain ENDP,;-GetNum PROC;-exitmain ENDP,;-ArraySum PROC;-exitmain ENDP,;-DispSum PROC;-exitmain ENDP,完善代码,问题处理,main过程,汇编语言程序设计-朱明,6,main PROCcallClrscrmovesi,OFFSET arrsmovecx,LENGTHOF arrscallGetNumcall
5、ArraySumcallDispSumexitmain ENDP,Section 1,TITTLE.;Str1BYTE“Input a Signed Integer:”,0Str2BYTE“The Sum of Integers is:”,0arrsDWORD 3 DUP(?),;-GetNum PROC;-exitmain ENDP,;-ArraySum PROC;-exitmain ENDP,;-DispSum PROC;-exitmain ENDP,问题处理,GetSum过程,汇编语言程序设计-朱明,7,;-GetNum PROC;-pushadmovedx,OFFSET Str1L1:
6、callWriteStringcallReadIntcallCrlfmovesi,eaxaddesi,4loopL1popadretGenNum ENDP,;-main PROC;-exitmain ENDP,;-ArraySum PROC;-exitmain ENDP,;-DispSum PROC;-exitmain ENDP,Section 1,问题处理,ArraySum过程,汇编语言程序设计-朱明,8,;-ArraySum PROC;-pushadmoveax,0L1:addeax,esiaddesi,4loopL1movesi,eaxpopadretArraySum ENDP,;-ma
7、in PROC;-exitmain ENDP,;-GetNum PROC;-exitmain ENDP,;-DispSum PROC;-exitmain ENDP,Section 1,问题处理,DispSum过程 借用irvine链接库可以方便的处理问题,汇编语言程序设计-朱明,9,;-DispSum PROC;-pushedxmovedx,OFFSET Str2callWriteStringcallWriteIntcallcrlfpopedxretDispSum ENDPEND main,;-main PROC;-exitmain ENDP,;-ArraySum PROC;-exitmain
8、 ENDP,;-ArraySum PROC;-exitmain ENDP,Section 1,外部链接库,除了前面用到的DumpRegs、WriteString、Clrf、ReadInt、Clrscr之外,还有以下常用的过程:以制定的时间间隔将程序暂停Delay 将时间的值放入EAX中,延时时间为毫秒 在屏幕上显示一段内存的内容DumpMem 以16进制的形式在标准输出上输出以ESI为起始地址、以ECX为元素数目、以EBX为元素尺寸的内存单元,汇编语言程序设计-朱明,10,moveax,10000callDelay,movesi,OFFSET arr1movecx,LENGTHOF arr1m
9、ovebx,TYPE arr1callDumpMem,Section 1,外部链接库,从标准输入读取一个字符ReadChar 从标准输入读取一个字符并保存在AL寄存器中 从标准输入读取32位16进制数ReadHex 从标准输入中读取一个32位的16进制整数,并保存在EAX寄存器中,但不会进行错误检查,汇编语言程序设计-朱明,11,charBYTE?callReadCharmovchar,al,hexsDWORD?callReadHexmovhexs,eax,Section 1,外部链接库,从标准输入读取一个字符串ReadString 从标准输入中读取一个字符串,在用户按下回车时结束,返回后EA
10、X保存着字符串字节数使用前应设定EDX指向保存字符串的数组的偏移地址,ECX为要读入的字符串的最大长度,汇编语言程序设计-朱明,12,str1BYTE50 DUP(?)strlnDWORD?movedx,OFFSET str1movecx,SIZEOF str1callReadStringmovstrln,eax,Section 1,外部链接库,在标准输出上输出一个等待提示信息WaitMsg 该过程用于在屏幕上输出一条等待信息“Press any key to continue”在标准输出上以二进制形式输出整数WriteBin 该过程在屏幕上以分组的二进制的形式显示eax的整数 分组显示是指每
11、组以4个二进制的方式显示,例如,汇编语言程序设计-朱明,13,callWaitMsg,Section 1,moveax,12345678hcallWriteBin,0001 0010 0011 0100 0101 0110 0111 1000,外部链接库,在标准输出上输出32位无符号整数WriteDec 该过程用于将EAX中的32位无符号整数的显示 在标准输出上以16进制的形式输出WriteHex 该过程在屏幕上以16进制形式显示EAX中的32位无符号整数的内容,该过程会在使用0补充32位显示 则显示的内容为,汇编语言程序设计-朱明,14,moveax,295callWriteDec,Sect
12、ion 1,moveax,1234hcallWriteHex,00001234,外部链接库,输出内容颜色控制的过程SetTextColor 设置当前输出字符的颜色以及背景颜色 字的颜色为最低字节的低4位,背景颜色为高4位 例如显示蓝底黄字的调用方式则为 设置后,字符将按照该颜色显示,汇编语言程序设计-朱明,15,Section 1,moveax,1EhcallSetTextColor,课堂练习,显示与循环程序外部函数库练习 调用SetTextColor过程设置颜色 调用WhiteChar过程显示字符“A”每行1种颜色背景,共计16行 每行16个字符,16种颜色,如图 可能需要使用PUSH和PO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 05 IRVINE 链接 条件 处理
链接地址:https://www.31ppt.com/p-6171001.html