版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第2章 80 x86计算机寄存器2 80 x86微处理器主要内容:主要内容: 80 x86的程序可见寄存器的程序可见寄存器 CPU的三种模式的三种模式 存储器寻址存储器寻址3自动获取指令指令搬运数据指令搬运数据代码代码数据数据数据数据4编程可用寄存器编程可用寄存器输入输出函数 ReadInt PROC uses ebx ecx edx esi 输入:无返回值:CF=0, 输入存在EAX CF=1, 输入无效,EAX=0 WriteInt proc输入:显示的整数存在EAX 返回值:无;5例1例子:求整数 a与b最大值,并在屏幕中输出最大值步骤1: 算法设计if a b then max=ae
2、lse max=b6用到的指令数据移送指令数据移送指令movmov destdest,srcsrc比较指令比较指令cmp x,yx,y跳跳转指令转指令jmp, jXXX(ja, jb, jz)函数调用指令函数调用指令 Call 如如 call writeint 7步骤2 编写程序步骤2.1 包含头文件 Include Irvine32.inc步骤2.2 定义数据段-为数据分配空间.dataa dd 10b dd 20 max dd ? 0100002000 abmaxif a b then max=aelse max=b9 mov eax, amov ebx, bcmp eax, ebxjb
3、L1mov max, eaxjmp L2L1: mov max, ebxL2 : 类C语言汇编语言10 mov eax, a mov ebx, b cmp eax, ebx jb L1 ;a b jmp output ;跳转至跳转至output?!L1: mov max, ebxoutput : mov eax, max call writeint 程序是顺序执行11 mov eax, a mov ebx, b cmp eax, ebx ja output ;ab 跳转跳转output mov eax, ebx ; ab 跳转跳转output mov eax, b ; a make32 201
4、6-01输出:Microsoft (R) Macro Assembler Version 6.15.8803. E:fzuasm的目录2016/03/07 13:02 180 2016-01.asm2016/03/07 12:53 142 2016-01.asm.bak2016/03/07 13:02 28,711 2016-01.exe2016/03/07 13:02 29,588 2016-01.ilk2016/03/07 13:02 13,516 2016-01.lst2016/03/07 13:02 3,605 2016-01.obj2016/03/07 13:02 91,136 20
5、16-01.pdb 7 个文件 166,878 字节 0 个目录 41,952,198,656 可用字节请按任意键继续. . .14步骤4 运行可执行程序E:fzuasm2016-01+2015步骤2 编写程序步骤2.1 包含头文件 Include Irvine32.inc步骤2.2 定义数据段-为数据分配空间.dataa dd ? ;注意这里改变了!b dd ?16步骤2.3 编写指令.codemain PROC mov eax, a cmp eax, b ja output mov eax, boutput:call writeint exitmain ENDPEND main保存保存20
6、16-01.asm文件文件17call readintmov a, eaxcall readintmov b,eax在此处插入步骤4 运行可执行程序E:fzuasm2016-0110036+100E:fzuasm2016-013004567+456718练习1.从键盘输入3个整数a,b,c;求整数 a,b,c最大值,并在屏幕中输出最大值2.在内存中存有10个整数,求这10整数 最大值,并在屏幕中输出最大值19用到的知识定义数组定义数组arrarr dddd 1,2,3,4,5,6,7,8,9,10 1,2,3,4,5,6,7,8,9,10数组第数组第i i个元素访问个元素访问arr4*i010
7、0020001000Arr +0Arr +1Arr +2Arr +3Arr +4Arr +4*9.max=arr0For(i=0;i10;i+) if max9 then goto L1 if max9 then goto L1 if max b then max=aelse max=b60Include Irvine32.inc.dataa dd 10b dd 20.codemain PROC mov eax, a cmp eax, b ja output mov eax, boutput:call writeint exitmain ENDPEND main61/代码段 内存地址 指令机器
8、码 汇编指令00401010 A1 00404000 MOV EAX,DWORD PTR DS:40400000401015 3B05 04404000 CMP EAX,DWORD PTR DS:4040040040101B 77 05 JA SHORT 2016-01.004010220040101D A1 04404000 MOV EAX,DWORD PTR DS:40400400401022 E8 73080000 CALL 2016-01.0040189A00401027 6A 00 PUSH 0 00401029 E8 5A090000 CALL /数据段内存地址00404000 0
9、A 00 00 00 14 00 00 00 00404008 00 00 00 00 00 20 20 2062Include Irvine32.inc.datax1 dd 10 x2 dd 30 x3 dd 20.codemain PROCmov eax,x1cmp eax,x2ja LL1mov eax,x2 63LL1:cmp eax,x3ja LL2mov eax,x3 LL2:call writeint exitmain ENDPEND mainInclude Irvine32.inc.datax dd 10,20,30,40,50,60,70,80,10,100.codemain PROCmov ecx, 0mov eax, x next:cmp eax, x4*ecxja LL1mov eax, x4*ecx LL1:inc ecxcmp ecx,10jb next64call writeint exitmain ENDPEND mainInclude Irvine32.inc.data x dd 10, 20,30,40,150,60,70,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理骨干沟通协调能力训练
- 护理环境与患者尊严保护
- 护理三基趣味学习之旅
- 统编版道德与法治四年级下册第1课我们的好朋友 第二课时教学设计
- 口腔卫生检查指南
- 班组安全培训年度计划
- 2025年广东省广州市增城区中考二模道德与法治试题(含答案)
- 快递行业思想教育理论与实践
- 旅游行业导游部经理面试全解
- 基于机器学习的情感分析技术及应用
- 河道生态修复治理实施方案
- 外墙真石漆施工工艺流程
- 《全液压转向器 摆线转阀式开心无反应集成阀型》
- 小儿药液外渗的预防及护理
- DB32-T 4787-2024 城镇户外广告和店招标牌设施设置技术标准
- AQ/T 1119-2023 煤矿井下人员定位系统通 用技术条件(正式版)
- 2024年厦门航空有限公司招聘笔试参考题库含答案解析
- 南京航空航天大学“天目启航”学生自由探索项目申请书
- EIM Starter Unit 6 This is delicious单元知识听写单
- 陕西铜川声威特种水泥有限公司2500t-d新型干法特种水泥熟料技改生产线项目环评报告
- GB/T 4062-2013三氧化二锑
评论
0/150
提交评论