- 1、本文档共37页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计Assembly Language Programming 主要内容 32位X86寄存器组 32位X86的工作模式 32位指令的程序设计 Win32 ASM VS DOS ASM 汇编语言与C/C++语言的混合编程 32位x86 CPU寄存器组 通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP 段寄存器: CS,DS,SS,ES,FS,GS 如何生成物理地址? 专用寄存器: EIP,EFLAGS 4个系统寄存器:GDTR、LDTR、IDTR、TR 5个模式控制寄存器:CR0、CR1、CR2、CR3、CR4 CR0用作控制处理器的模式和状态。PE标志使处理器进入保护模式。PG标志设置处理器是否将使用分页机制。 CR1被保留。 CR2寄存器用来存储发生页错误的线性地址。 CR3寄存器在分页机制里物理地址的解析过程中扮演着重要的角色,这个寄存器存放着页目录的基地址。 CR4寄存器在一些高级机制中使用,例如,设置PAE标志可以使另外四根地址线被使用,这样,地址线将达到36根。 这两类寄存器使内存管理更加便利。 32位CPU工作模式 实模式 8088/8086的自然模式 80286-Pentium系列复位后工作于实模式,直到OS引导后,切换到保护模式(通过CR0的PE位)。 保护模式 支持多任务,虚拟存储和大寻址空间 80286-Pentium系列主要工作模式 虚拟8086模式 运行8086程序 保护模式-分段技术 对内存的访问通过逻辑(虚拟)地址进行,逻辑地址由16位段选择符和32位偏移量组成; 段寄存器的值即选择符,高14位提供对段描述符的索引,低两位指定权级; 段描述符由段的基址(32位)、长度(20)、访问权限(12)组成; 段的基址+ 32位偏移量得到线性地址; 为了避免每次访问内存时都去引用描述符表,段寄存器的“隐藏部分”保存段描述符; 最多拥有16K(14位)个段,虚拟存储空间64TB 保护模式-分页技术 32位汇编寻址方式 寻址方式改变 地址寄存器:任一32位寄存器 比例寻址方式: [index*n](n=1,2,4,8) 其它一样 MOV EAX,[ECX] MOV DWORD PTR [EBP],1 MOV 4[ESI][EAX],1 32位汇编指令 相同指令 MOV EAX, 1;XCHG [EAX], EBX …… 改变指令:偏移地址为32位 LEA EBX,BUFFER CALL/RET (CS?双字) INT/IRET (CS?双字) LOOP? ECX PUSH SP :8086 后的SP入栈;286前的SP入栈 32位汇编指令(续) 新加指令 LFS、LGS、LSS:LFS Reg16,mem32 PUSHA/POPA; 8个16位Register PUSHAD/POPAD; 8个32位Register PUSHFD/POPFD CWD/CWDE(AX?EAX),CDQ(EAX?(EDX,EAX); MOVSX MOVSX AX, AL MOVSX EAX,AX MOVZX; MOVZX AX, AL MOVZX EAX,AX -------------------算术--------------------- IMUL AX,BX,3; IMUL AX,BX; -------------------移位--------------------- SHLD/SHRD; BT(BIT TEST) BTS(BIT TEST AND SET) BTR(BIT TEST AND RESET) BTC(BIT TEST AND COMPLEMENT) BT EAX,0 -------------------串操作--------------------- MOVSD/LODSD/STOSD/CMPSD/SCASD 32位伪指令 处理器伪操作 选择哪一个处理器 .8086 .286 .386 .386p .586 段定义伪指令 在实模式下如果使用32位指令,必须在段定义时给出段的属性为user16 存储模式: 决定一个程序的规模 .model TINY、 SMALL、 FLAT等 数据定义伪指令 DQ DF DT :4字,6字,8字 32位编程示例 累加两个8字节数 d1 dq 1111111111111111h d2 dq 2222222222222222h d3 dq ? MOV EAX, DWORD PTR D1 ADD EAX, DWORD PTR D2 MOV EDX, DWORD PTR D1+4 ADC EDX, DWORD PTR D2+4 MOV DWORD PTR D3,
您可能关注的文档
最近下载
- 年度院感工作总结8篇.pdf VIP
- 2024春节前停复工计划及应急预案(5页).pdf
- 提升病历内涵质量专项行动计划.ppt
- 水保监测实施方案格式.doc
- 2025年湖南湘投能源投资有限公司第一季度招聘82人笔试备考试题及答案解析.docx
- 拉赫玛尼诺夫 e小调音乐瞬间 Op.16 No.4 原版带指法 Moment Musicaux in E minor 钢琴独奏 五线谱.pdf
- 罗兰(Roland)STUDIO-CAPTURE (UA-1610) 中文说明书.pdf VIP
- 专题12.20 三角形全等几何模型-“手拉手”模型(专项练习)(基础篇)-2021-2022学年八年级数学上册基础知识专项讲练(人教版).docx VIP
- 语文课程的哲学思考.docx VIP
- 肉制品项目招商引资方案.pptx
文档评论(0)