IA-32汇编语言

上传人:小** 文档编号:243146229 上传时间:2024-09-16 格式:PPT 页数:24 大小:165KB
返回 下载 相关 举报
IA-32汇编语言_第1页
第1页 / 共24页
IA-32汇编语言_第2页
第2页 / 共24页
IA-32汇编语言_第3页
第3页 / 共24页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,IA-32,汇编语言,一系一教 郭惠芳,supercmp2009,寄存器,八个,32,位的通用寄存器,EAX,,,EBX,,,ECX,,,EDX,,,EBP,,,ESP,,,ESI,,,EDI,EFLAGS,EIP,增加,FS,,,GS,,其余段寄存器不变。,内存结构,逻辑地址,48,位:段址(,16,位)确定一个,32,位的段基址;偏移量,32,位,线性地址与物理地址:,32,位,寻址空间:,4GB,段大小:,4GB,段寄存器由操作系统在程序运行之前设置好,都 指向这个,4GB,的段。,寻址方式,立即数寻址:,8,,,16,,,32,位都可。,寄存器寻址,内存单元的寻址,直接寻址:直接用变量名,寄存器间接寻址:,8,个,32,位通用寄存器都可,比例,变址,相对,比例,变址,基址,比例,变址,相对基址,比例,变址寻址,变址寄存器可以是除,ESP,以外的所有,32,位通用寄存器。基址寄存器可以是任何,32,位通用寄存器。,增加的指令,movzx,r16/32, r/m8/16,带,0,扩展传送指令,Movsx,带符号扩展传送指令,增加的指令,Pusha,所有,16,位通用寄存器入栈,Pushad,所有,32,位通用寄存器入栈,Popa,popad,增加的指令,CWDE,将,AX,的符号扩展至,EAX,。,CDQ,将,AX,的值符扩展至,EDX,:,EAX,中。,跳转指令,JMP,在,IA-32,中没有远跳转,因为只有一个段(在保护模式),指令中存放的是下一条指令与目的地址间的差(一个字节或,4,个字节)。,IA-32,汇编语言程序的组织,处理器选择伪指令语句,.8086,.286,.386(p),是否包括特权指令,.486(p),IA-32,汇编语言程序的组织,内存模式选择伪指令语句,.model,memorymode,langtype,其中,内存模式:,TYPE,SMALL,MEDIUM,COMPACT,LARGE,HUGE(,为实模式程序所使用,对于完全用汇语言的实模式而言,前两种够用。,),FLAT,(保护模式时用),Langtype,:声明子程序调用约定,用于混合编程。(,STDCALL/C,),Win32,中使用,STDCALL,编译器选项伪指令语句,Option,casemap,NONE/ALL/NOPUBLIC,其中,,NONE,:不对标识符中字母的大小写进行转换,即大小写敏感。,ALL,:小写变大写,即大小写不敏感,NOPUBLIC,:除,public,extern,proc,proto,等其余都转换。,文件包含和库包含伪指令语句,Include filename,预先将所有要用到的函数声明放在一个文件中,*,.inc;,masm32,中有:,user32.inc,,,kernel32.inc,等。,Includelib,filename,可在连接时放在命令中。,Includelib,filename,DOS,下有函数库,称为静态库,由,link,程序从库中找出相应的函数代码,一起链接至最后的可执行文件中。,win32,环境下,程序链接时仍然要使用函数库来定位函数信息,库文件中只有函数的定位信息和参数数目等简单信息,这种库文件叫做导入库,一个,DLL,文件(*,.,dll,)对一个导入库(*,.lib,)。,简化段定义伪指令语句,IA-32,就一个段,其中有若干个区域,(section),.code,.data,.data?,.const,.stack,字节数,操作系统自动为,IA-32,应用程序分配堆栈,并且动态增长。,IA-32,汇编语言源程序模板,.386,.model,flat,stdcall,option,casemap:none,Include filename,Includelib,filename,.data,;,.data?,;,.const,;,.code,Start:,End start,编译、连接、调试,Ml /c /,coff,hello.asm,/c,表示不必连接;,/,coff,表示生成,COFF,格式目的文件,因为,link,要求使用该格式的目标文件,,/Fl,表示生成列表文件,,/,Zi,表示加入调试信息。,Link /,subsystem:windows,hello.obj,/debug,表示在可执行文件中加入调试信息。,调试,在编译和连接时加入调试信息后,使用,VC,就可调试,步骤如下:,File|open,project,选择,hello.exe,File|open,file,选择,hello.asm,按下,F10,,可出现一个,dissemmble,窗口。,开始单步执行一条汇编语句,但不进入子程序,,F11,单步执行一条汇编语句,并可进入子程序调试。,查看,debug,菜单项,有多个功能。,分支程序设计高级语法,.if,逻辑表达式,汇编语句,.,elseif,逻辑表达式,汇编语句,.else,汇编语句,.,endif,分支程序设计高级语法,其逻辑表达式可以是:,条件测试语句,位测试语句和逻辑算符组合而成。,条件测试语句可以用,=,!=,等条件测试语句时,表示的是无符号数的比较,若是有符号数不能用这个语法。,例:将一位,16,进制数字转换为相应的,ASCII,码,And al,0fh,.,if al9,add al,37h,.,else,add al,30h,.,endif,And al,0fh,Cmp,al,9,Jbe,c0001,Add al,37h,Jmp,c0003,c0001:,Add al,30h,c0003:,经编译器翻译后变为:,循环程序设计高级语法,.while,逻辑表达式,.break .if,逻辑表达式,.continue .if,逻辑表达式,.,endw,表示逻辑表达式为真进入循环。,循环程序设计高级语法,.repeat,.break .if,逻辑表达式,.continue .if,逻辑表达式,.until,逻辑表达式,逻辑表达式为真退出循环,高级语法翻译后(在,VC,中),mov si,0,00401023 mov si,0,.while si 100,00401027 jmp C0001 (401031h),mov arraysi,a,00401029 mov byte ptr array (404000h)esi,61h,.endw,00401031 cmp si,64h,00401035 jb C0002 (401029h),
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!