资源描述:
《汇编语言程序设计课件 第3讲 汇编语言程序设计初步.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三讲汇编语言程序设计初步基本概念程序设计的步骤简单程序设计指令的不同执行序列的问题比较指令指令学习本讲小结1、基本概念程序=指令的有序序列计算机是通过执行程序来解决问题的计算机是通过执行指令序列来解决问题的指令是对计算机完成何种操作及对什么操作的命令,由操作码和操作数两部分组成操作码:指示计算机所要执行的操作操作数:指出指令执行操作的过程中所需要的操作数每种计算机都有一组指令集供用户使用指令系统寻址方式:获得操作数的方式2、程序设计的步骤分析问题做什么?设计解决方法怎么做?画出流程图编写程序如何实现?运行调试让程序能够运行程序测试
2、正确吗?设计总结3、简单程序设计简单?数据结构简单,数据量小寻址方式简单任务计算1+2+3+4的和一个简单的汇编语言程序不用乘法指令计算一个数x的14倍3.1第一个程序计算1+2+3+4的和放入AH寄存器程序段:movah,1;ah=1addah,2;ah=ah+2addah,3;ah=ah+3addah,4;ah=ah+4int20h;程序结束参见教材mov指令add指令sub指令使用debug编写执行这个程序运行debug程序[开始][运行]进入汇编输入方式(A命令)A100从内存偏移地址100H开始存放程序依次输入这个程序的每行最后一
3、行直接回车察看程序(U命令)U10010b反汇编从100H到10BH的程序执行该程序(G命令)g从IP开始执行程序察看寄存器(R命令)R单步执行命令(T命令/P命令)TP使用emu8086编写执行这个程序打开emu8086新建空白程序输入该程序运行检查ah的内容单步运行观察ah的变化3.2一个简单的汇编语言程序程序movax,0123hmovbx,0456haddax,bxaddax,axint20h在emu8086中执行该程序假设ax中存放的是x,bx中存放的是y该程序的结果是什么?3.3不用乘法指令计算一个数x(x在cl中)的14倍放入
4、ah寄存器方法114x=8x+4x+2xmovcl,3moval,claddal,almovbl,aladdbl,blmovcl,bladdcl,clmovah,0addah,claddah,bladdah,alint20h方法214x=16x-2xmovcl,3moval,claddal,aladdal,aladdal,aladdal,aladdcl,clmovah,alsubah,clint20h4、指令的不同执行序列的问题在C语言中有如下命令if(a
5、现?任务将bx,cx中较大数放入ax计算1+2+3+…+100的和存入AX中将AX,BX和CX寄存器中最大数保存在DX中4.1将(bx,cx)中较大数放入ax我们必须比较bx和cxcmp指令cmpbx,cx转移指令jc标号(小于转移)jmp标号程序研究movbx,100movcx,50cmpbx,cx;比较bx和cxjcskip;bx6、skipmovax,bxjmpendskip:movax,cxend:int20h4.3能不能简单些?movcx,-100movbx,-50movax,bxcmpcx,axjcendmovax,cxend:int20hcx7、dcx,1cmpcx,101jcloopint20hAX=0CX=0CX<101?AX=AX+CXCX=CX+1结束4.6简单程序也可能出错!movax,0movcx,0loop:addcx,1addax,cxcmpcx,101jcloopint20hAX=0CX=0CX<101?CX=CX+1AX=AX+CX结束4.7将AX,BX和CX寄存器中最大数保存在DX中算法思路首先将AX和BX中大的放在DX中然后将CX和DX中大的放在DX中框图开始开始AX>BXAXDXBXDXCX>DXCXDXNYYN在保证逻辑关系不变的情况下,框图可以
8、变形开始结束AX>BXAXDXBXDXCX>DXCXDXNYYN尽量将所有框放在一条直线上,YES向外开始结束AX>BXAXDXBXDXCX<=DXCXDXYNYN根