欢迎来到天天文库
浏览记录
ID:48182590
大小:315.00 KB
页数:52页
时间:2020-01-18
《chapter5过程.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章过程要点:MASM库函数堆栈操作过程的定义和使用使用过程进行程序设计5.2与外部库链接链接库是指包含了标准库函数的文件,这些库函数已经编译成机器码的形式。链接库可以由一个或多个源文件构成,这些文件被汇编成目标文件并以链接器能够识别的特定格式插入到一个文件中构成链接库。例如:程序要调用WriteString过程在控制台上显示字符串WriteStringPROTO;PROTO伪指令声明要调用的外部过程,该语句可以在Irvine32.inc中找到。CallWriteString;使用CALL指令调用writestring过程CallWriteString指令的处理过程:汇编器汇编到
2、该指令时,为CALL指令的目的地址留出空白,该地址要等到链接阶段再填入。链接器在链接库中查找WriteString过程,将其相应的机器指令复制到程序的可执行文件中,并将该过程在可执行文件中的实际地址补入到CALL指令中为目的地址留出的空白处。如果试图调用的过程不在链接库中,链接器会产生一条链接错误消息,并拒绝生成可执行文件。链接器的命令行选项链接程序将程序的目标文件和库文件合并起来,格式为:link32hello.objirvine32.libkernel32.libirvine32.lib:链接到kernel32.lib库文件。kernel32.lib:MS-Windowspla
3、tformSDK(平台软件开发包)的一部分,链接到kernel32.dll中的操作系统函数。kernel32.dll:动态链接库,MS-Windows的一个基本组件,包含了字符输入输出等功能的可执行函数。5.3本书附带的链接库控制台窗口:MS-Windows创建的文本窗口,运行于MS-Windows的彩色文本模式下,默认尺寸为80列25行。通过“开始
4、运行”,“cmd”(forWindows2000/XP)或”command”(Windows95/98)打开。标准输入:键盘,也可以重定向到从文件或串口读取。标准输出:控制台输出,也可以重定向到向文件、打印机或串口输出。重定向输入输出
5、:可以在命令行提示符下使用重定向输入输出命令,将标准输入或输出重定向到其他文件或串口。重定向输入输出命令:>重定向输出<重定向输入
6、管道符例如:sample>output.txtsampleoutput.txtprog1
7、prog2;将prog1.exe的输出送到prog2.exe的输入prog18、prog2>output.txt;prog1.exe从input.txt中读取输入,然后将输出送prog2.exe,prog2.exe再将自己的输出重定向到output.exe.Irvine32.lib链接库中包含9、的常用过程P105表5.1屏幕显示和光标的变换Clrscr:用于清除控制台窗口内容Crlf:将光标定位到控制台窗口下一行的开始Gotoxy:将光标定位在控制台窗口中指定的行列位置上。默认情况下,X坐标范围(列坐标):0~79,设置在DL中;Y坐标范围(行坐标):0~24,设置在DH中例如:movdh,10movdl,20callgotoxy5.3.2过程的描述关于时间Delay:以指定的毫秒数暂停程序;EAX设置为预期时间间隔,单位是毫秒。例如:moveax,1000calldelayGetMseconds:从午夜开始计算的逝去的毫秒数;返回值在EAX中。.datastartTim10、eDWORD?.codecallGetMsecondsmovstartTime,eaxL1:…;(循环体)loopL1callGetMsecondssubeax,startTimeWaitMsg:显示“Press[Enter]tocontinue…”消息,并等待用户按下回车键。MsgBox:显示一个图形界面的弹出消息框。调用时通过EDX传递要显示的字符串的偏移地址,字符串将显示在消息框中央,还可以通过EBX传递要显示在标题栏中的字符串的偏移地址。MsgBoxAsk:显示一个带Yes和NO按钮图形界面的弹出消息框。通过EDX传递要显示的作为问题的字符串的偏移地址,EBX传递显示在标题11、栏中的字符串的偏移地址。MsgBoxAsk在EAX中返回一个整数值:IDYES和IDNO,通过该返回值可以知道用户选择了哪个按钮。从标准输入读入ReadChar:读取一个字符并在AL中返回,输入的字符不在屏幕上回显。ReadHex:读取一个32位十六进制整数并在EAX寄存器中返回、对无效字符不进行错误检查。ReadInt:读入一个32位有符号整数、EAX、进行错误检查、输入的数字可以以正负号开头,但其余部分只能是数字。ReadString:读入一个字符串,并自动在字符
8、prog2>output.txt;prog1.exe从input.txt中读取输入,然后将输出送prog2.exe,prog2.exe再将自己的输出重定向到output.exe.Irvine32.lib链接库中包含
9、的常用过程P105表5.1屏幕显示和光标的变换Clrscr:用于清除控制台窗口内容Crlf:将光标定位到控制台窗口下一行的开始Gotoxy:将光标定位在控制台窗口中指定的行列位置上。默认情况下,X坐标范围(列坐标):0~79,设置在DL中;Y坐标范围(行坐标):0~24,设置在DH中例如:movdh,10movdl,20callgotoxy5.3.2过程的描述关于时间Delay:以指定的毫秒数暂停程序;EAX设置为预期时间间隔,单位是毫秒。例如:moveax,1000calldelayGetMseconds:从午夜开始计算的逝去的毫秒数;返回值在EAX中。.datastartTim
10、eDWORD?.codecallGetMsecondsmovstartTime,eaxL1:…;(循环体)loopL1callGetMsecondssubeax,startTimeWaitMsg:显示“Press[Enter]tocontinue…”消息,并等待用户按下回车键。MsgBox:显示一个图形界面的弹出消息框。调用时通过EDX传递要显示的字符串的偏移地址,字符串将显示在消息框中央,还可以通过EBX传递要显示在标题栏中的字符串的偏移地址。MsgBoxAsk:显示一个带Yes和NO按钮图形界面的弹出消息框。通过EDX传递要显示的作为问题的字符串的偏移地址,EBX传递显示在标题
11、栏中的字符串的偏移地址。MsgBoxAsk在EAX中返回一个整数值:IDYES和IDNO,通过该返回值可以知道用户选择了哪个按钮。从标准输入读入ReadChar:读取一个字符并在AL中返回,输入的字符不在屏幕上回显。ReadHex:读取一个32位十六进制整数并在EAX寄存器中返回、对无效字符不进行错误检查。ReadInt:读入一个32位有符号整数、EAX、进行错误检查、输入的数字可以以正负号开头,但其余部分只能是数字。ReadString:读入一个字符串,并自动在字符
此文档下载收益归作者所有