基本程序设计优秀课件.ppt
《基本程序设计优秀课件.ppt》由会员分享,可在线阅读,更多相关《基本程序设计优秀课件.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基本程序基本程序设计设计第1页,本讲稿共58页 基本程序设计是使用单一结构的程序设计,它是程序设计基本程序设计是使用单一结构的程序设计,它是程序设计的基础。程序有三种基本结构,即顺序结构、分支结构和循环的基础。程序有三种基本结构,即顺序结构、分支结构和循环结构。任何复杂的程序都是由基本结构组成的。因此,一定要结构。任何复杂的程序都是由基本结构组成的。因此,一定要掌握基本程序设计的方法。对于汇编语言程序设计而言,更要掌握基本程序设计的方法。对于汇编语言程序设计而言,更要掌握好基本程序的设计,这是编写复杂程序的基础。掌握好基本程序的设计,这是编写复杂程序的基础。本章将分别介绍各种基本程序设计的方法
2、及子程序的设计。本章将分别介绍各种基本程序设计的方法及子程序的设计。4.1 顺序程序设计4.2 分支程序设计4.3 循环程序设计实训一 分支程序设计实训二 循环程序设计v第第4 4章章 基本程序设计基本程序设计第2页,本讲稿共58页 顺序程序是最简单程序设计,这种程序不使用分支、循环结构,程序按顺顺序程序是最简单程序设计,这种程序不使用分支、循环结构,程序按顺序执行,只能完成相对简单的操作。限于这种特点,在进行顺序程序设计时应序执行,只能完成相对简单的操作。限于这种特点,在进行顺序程序设计时应合理安排指令的先后顺序,以完成相应的功能。合理安排指令的先后顺序,以完成相应的功能。在较为复杂的程序中
3、,顺序程序是逐段出现,它主要完成一些简单操作或在较为复杂的程序中,顺序程序是逐段出现,它主要完成一些简单操作或过程的准备、任务的过渡、结果的存储及程序结束等。它是程序的基本组成部过程的准备、任务的过渡、结果的存储及程序结束等。它是程序的基本组成部分。以下以结合几个实例说明顺序程序的基本方法,它们是以后各种复杂程序分。以下以结合几个实例说明顺序程序的基本方法,它们是以后各种复杂程序设计的基础。设计的基础。4.1 4.1 顺序程序设计顺序程序设计返回本章首页返回本章首页进入下一节进入下一节v第第4 4章章 基本程序设计基本程序设计第3页,本讲稿共58页4.1.1 4.1.1 存储单元内容移位存储单
4、元内容移位 存储单元移位是指其中的内容左移或右移若干位。现举例存储单元移位是指其中的内容左移或右移若干位。现举例说明。说明。【例【例4.1 4.1】将将AXAX寄存器中的内容左移寄存器中的内容左移2 2位,字存储单元位,字存储单元DATDAT中的内容右移中的内容右移3 3位位(移位后的空位补移位后的空位补0).0).分析分析:内容移位一般由移位指令实现内容移位一般由移位指令实现,但要求移后空位为但要求移后空位为0 0,故应使用逻辑移位指令。当移位次数大于故应使用逻辑移位指令。当移位次数大于1 1时,可将移位次数放时,可将移位次数放至至CLCL中进行移位。操作如下:中进行移位。操作如下:MOVM
5、OVCLCL,2 2 SHLSHLAXAX,CLCLINCINCCLCLSHRSHRDATDAT,CLCLv第第4 4章章 基本程序设计基本程序设计第4页,本讲稿共58页4.1.2 4.1.2 乘法运算乘法运算 汇编语言本身也是比较灵活的,乘法运算可用乘法指令直接完汇编语言本身也是比较灵活的,乘法运算可用乘法指令直接完成,有时候也可以由移位指令或加法指令完成。成,有时候也可以由移位指令或加法指令完成。【例【例4.2 4.2】将寄存器将寄存器ALAL的内容乘的内容乘1010,结果存至,结果存至DXDX寄存器。寄存器。分析:对一个数进行乘分析:对一个数进行乘1010运算,可以直接使用乘法指令实现,
6、运算,可以直接使用乘法指令实现,也可由移位指令或加法指令实现,方法分别如下:也可由移位指令或加法指令实现,方法分别如下:1 1用乘法指令实现用乘法指令实现MOVMOVBL,BL,1010IMUL IMUL BLBL;AXALBL=AL10AXALBL=AL10MOVMOVDXDX,AXAXv第第4 4章章 基本程序设计基本程序设计第5页,本讲稿共58页2 2用移位指令实现用移位指令实现 移位操作时,在最高位不变化时,左移一位,相当原数乘移位操作时,在最高位不变化时,左移一位,相当原数乘2 2,因此也可以用移位操作实现乘,因此也可以用移位操作实现乘1010运算。运算。XORXORAHAH,AHA
7、H;AHAH清零清零SALSALAXAX,1 1;AXAX2AXAX2MOVMOVBXBX,AXAX;存至;存至BXBX寄存器寄存器MOVMOVCLCL,2 2SALSALAXAX,CLCL;AXAX8AXAX8ADDADDAXAX,BXBX;AXAX10AXAX10v第第4 4章章 基本程序设计基本程序设计第6页,本讲稿共58页3 3用加法指令实现用加法指令实现 一个数与自己相加可以实现乘一个数与自己相加可以实现乘2 2运算,多次累加就可以实现运算,多次累加就可以实现乘乘1010运算。运算。MOVMOVAHAH,0 0ADDADDAXAX,AXAX;AXAX2AXAX2MOVMOVBXBX,
8、AXAX;存至;存至BXBX寄存器寄存器ADDADDAXAX,AXAX;AXAX4AXAX4ADDADDAXAX,AXAX;AXAX8AXAX8ADDADDAXAX,BXBX;AXAX10AXAX10v第第4 4章章 基本程序设计基本程序设计第7页,本讲稿共58页4.1.3 4.1.3 屏蔽与置位屏蔽与置位 对字节或字变量中的某些位进行置对字节或字变量中的某些位进行置0 0操作,称为屏蔽操作。操作,称为屏蔽操作。使某些位强迫置使某些位强迫置1 1则是置位操作。它们是数据处理常用的方法。则是置位操作。它们是数据处理常用的方法。【例【例4.3 4.3】将字节类型变量】将字节类型变量DATDAT的高
9、的高4 4位置位置0,0,其余各位保持不其余各位保持不变。变。解解:屏蔽操作多用逻辑运算指令实现屏蔽操作多用逻辑运算指令实现.本例使用逻辑与指令完本例使用逻辑与指令完成。任何位与成。任何位与0 0相与,结果都为相与,结果都为0 0,由此达到该位被屏蔽的目的。,由此达到该位被屏蔽的目的。非屏蔽位应与非屏蔽位应与1 1相与相与,以保证该位不变以保证该位不变.MOVMOVALAL,DATDATANDANDALAL,0FH0FH;屏蔽高四位;屏蔽高四位MOVMOVDATDAT,AXAXv第第4 4章章 基本程序设计基本程序设计第8页,本讲稿共58页 通过逻辑运算指令也很容易实现字或字节的置位操作。一般
10、使用通过逻辑运算指令也很容易实现字或字节的置位操作。一般使用逻辑或指令实现置位操作逻辑或指令实现置位操作 。例如把上例中例如把上例中DATDAT变量的高四位置变量的高四位置1 1,用下面指令即实现即可:,用下面指令即实现即可:OR OR DATDAT,0F0H0F0Hv第第4 4章章 基本程序设计基本程序设计第9页,本讲稿共58页4.1.4 4.1.4 拆字与合字拆字与合字 【例例4.4 4.4】将存储单元】将存储单元DATDAT中两位压缩的中两位压缩的BCDBCD数拆成二个非压缩数拆成二个非压缩BCDBCD数数(高位高位BCDBCD数放在数放在DAT+1DAT+1单元,低位单元,低位BCDB
11、CD数放在数放在DAT+2DAT+2单元单元)。分析:将分析:将DATDAT单元中的单元中的BCDBCD数拆开可用移位的方法。对高位数拆开可用移位的方法。对高位BCDBCD数可逻辑右移数可逻辑右移4 4位而成位而成为非压缩数;低位为非压缩数;低位BCDBCD数可屏蔽其高四位而成为非压缩数可屏蔽其高四位而成为非压缩BCDBCD数。指令如下:数。指令如下:MOVMOVAL,DATAL,DATMOVMOVCL,4CL,4SHRSHRAL,CLAL,CL;得到高位;得到高位BCDBCD数数MOVMOVDAT+1,ALDAT+1,ALMOVMOVAL,DATAL,DATANDANDAL,0FHAL,0F
12、H;得到低位;得到低位BCDBCD数数MOVMOVDAT+2,ALDAT+2,ALv第第4 4章章 基本程序设计基本程序设计第10页,本讲稿共58页 【例例4.54.5】将存储单元】将存储单元DAT1DAT1和和DAT2DAT2中分别存有两个非压缩的中分别存有两个非压缩的BCDBCD数,数,将其合成一个压缩将其合成一个压缩BCDBCD数数(DAT1DAT1单元为高位单元为高位BCDBCD数,数,DAT2DAT2单元为低位单元为低位BCDBCD数数),结果存入,结果存入DAT0DAT0单元。单元。分析:将两个单元中的分析:将两个单元中的BCDBCD数合并可用加法指令与移位指令相结合数合并可用加法
13、指令与移位指令相结合的方法。其中高位的方法。其中高位BCDBCD数可由数可由DAT1DAT1单元数据逻辑左移单元数据逻辑左移4 4位得到;再与位得到;再与DAT2DAT2单元相加即可完成合并。指令如下:单元相加即可完成合并。指令如下:MOVMOVAL,DAT0AL,DAT0MOVMOVCL,4CL,4SHLSHLAL,CLAL,CLADDADDAL,DAT1AL,DAT1MOVMOVDAT0,ALDAT0,ALv第第4 4章章 基本程序设计基本程序设计第11页,本讲稿共58页4.1.5 4.1.5 数据与数据与ASCIIASCII码的相互转换码的相互转换 编程中经常要用到数据显示的问题,通常的
14、做法是将要显示编程中经常要用到数据显示的问题,通常的做法是将要显示的数据转换为的数据转换为ASCIIASCII码后,再调用相关的中断来显示。在二、十、码后,再调用相关的中断来显示。在二、十、十六等常用进制的数据中,最为复杂的是十六进制数据的显示,十六等常用进制的数据中,最为复杂的是十六进制数据的显示,查阅查阅ASCIIASCII表可知,数据表可知,数据0 09 9的的ASCASC码为该数据加上码为该数据加上30H30H,数据,数据A AF F的的ASCIIASCII码为该数据加上码为该数据加上37H37H。对于从键盘上输入的数据,由于。对于从键盘上输入的数据,由于是以是以ASCIIASCII码
15、形式输入的,通常转换为数据本身再进行处理,其码形式输入的,通常转换为数据本身再进行处理,其转换的方法较多,但通常的方法是上述过程的逆过程,即对转换的方法较多,但通常的方法是上述过程的逆过程,即对30H30H39H39H(0 09 9的的ASCASC码)减去码)减去30H30H,数据,数据41H41H46H46H(A AF F的的ASCIIASCII码)码)减去减去37H37H。下面举例说明。下面举例说明。v第第4 4章章 基本程序设计基本程序设计第12页,本讲稿共58页 【例例4.64.6】在字节存储单元】在字节存储单元DATDAT中有两位十六进制的数据为中有两位十六进制的数据为6AH6AH,
16、要求将该,要求将该数据显示到屏幕上。数据显示到屏幕上。分析:要实现该十六进制数据的显示,一般是调用分析:要实现该十六进制数据的显示,一般是调用DOSDOS或或BIOSBIOS提供的中提供的中断,而这些中断几乎都要求将要显示的内容转换为断,而这些中断几乎都要求将要显示的内容转换为ASCIIASCII码。以下用码。以下用DOSDOS系统系统功能调用的功能调用的2 2号功能完成字符显示。程序如下:号功能完成字符显示。程序如下:DATADATASEGMENTSEGMENTDATDATDBDB6AH6AHDATADATAENDSENDSCODECODESEGMENTSEGMENTASSUME CSASS
17、UME CS:CODECODE,DSDS:DATA DATA v第第4 4章章 基本程序设计基本程序设计第13页,本讲稿共58页STARTSTART:MOVMOVAXAX,DATADATAMOVMOVDSDS,AXAXMOVMOVDLDL,DATDATMOVMOVALAL,DLDL;暂存至;暂存至ALAL寄存器寄存器MOVMOVCLCL,4 4SHRSHRDLDL,CLCLADDADDDLDL,30H30H;高位十六进制数据;高位十六进制数据66转换为转换为ASCIIASCII码码MOVMOVAHAH,02H02HINTINT21H21H;显示;显示MOVMOVDLDL,ALALANDANDD
18、LDL,0FH0FHADDADDDLDL,37H37H;低位十六进制数据;低位十六进制数据AA转换为转换为ASCIIASCII码码INTINT21H21H;显示;显示MOVMOVAHAH,4CH4CHINTINT21H21HCODECODEENDSENDSENDENDSTARTSTARTv第第4 4章章 基本程序设计基本程序设计第14页,本讲稿共58页4.1.6 4.1.6 简单算术运算简单算术运算【例例4.7 4.7】在字存储单元】在字存储单元A A、B B和和C C中分别存放着一个有符号数,求(中分别存放着一个有符号数,求(C C89H89HABAB)/A/A,商和余数分别存入字存储单元,
19、商和余数分别存入字存储单元D D和和E E。分析:直接用有符号数运算指令完成即可。程序如下:分析:直接用有符号数运算指令完成即可。程序如下:DATADATASEGMENTSEGMENTA ADWDW1234H1234HB BDWDW5678H5678HC CDWDW3456H3456HD DDWDW?E EDWDW?DATADATAENDSENDSCODECODESEGMENTSEGMENTASSUME CS:CODE,DS:DATAASSUME CS:CODE,DS:DATAv第第4 4章章 基本程序设计基本程序设计第15页,本讲稿共58页START:START:MOVMOVAX,DATAA
20、X,DATAMOVMOVDS,AXDS,AXMOVMOVAX,CAX,CSUBSUBAX,89HAX,89HCWDCWD;扩展为双字;扩展为双字MOVMOVCX,DXCX,DXMOVMOVBX,AXBX,AX;结果暂存至;结果暂存至CX,BXCX,BXMOVMOVAX,AAX,AIMULIMULB B;求;求ABABADDADDAX,BXAX,BXADCADCDX,CXDX,CX;与前面结果相加;与前面结果相加IDIVIDIVA A;AXAX是商,是商,DXDX是余数是余数MOVMOVD,AXD,AXMOVMOVE,DXE,DX;保存结果;保存结果MOVMOVAH,4CHAH,4CHINTIN
21、T21H21HCODECODEENDSENDSENDENDSTARTSTARTv第第4 4章章 基本程序设计基本程序设计第16页,本讲稿共58页4.1.7 4.1.7 查表查表【例例4.8 4.8】在以】在以TABLETABLE为首地址的内存中顺序存有为首地址的内存中顺序存有0 01010的平方数表。今从键盘上的平方数表。今从键盘上输入一个数(输入一个数(1111),求其平方值,结果保存至),求其平方值,结果保存至RSLTRSLT单元。单元。分析:因为平方表已顺序排放在内存中。又已知首地址分析:因为平方表已顺序排放在内存中。又已知首地址TABLETABLE,只要把输入数据,只要把输入数据作为位
22、移量与首址相加,就指向了表中平方值的地址,取其内容即为该数的平方作为位移量与首址相加,就指向了表中平方值的地址,取其内容即为该数的平方值。程序如下:值。程序如下:DATADATASEGMENTSEGMENTTABLETABLEDB 0DB 0,1 1,4 4,9 9,1616,2525,3636,4949,6464,8181,100100RSLTRSLTDBDB?DATADATAENDSENDSCODECODESEGMENTSEGMENTASSUME CSASSUME CS:CODECODE,DSDS:DATADATAv第第4 4章章 基本程序设计基本程序设计第17页,本讲稿共58页START
23、START:MOVMOVAXAX,DATADATAMOVMOVDSDS,AXAXMOVMOVAHAH,00H00HINTINT16H16H;输入数据;输入数据ANDANDALAL,0FH0FH;将;将ASCIIASCII码转换为数据码转换为数据XORXORBXBX,BXBXMOVMOVBLBL,ALAL;存至;存至BXBXLEALEASISI,TABLETABLEMOVMOVALAL,SI+BXSI+BX;查表;查表MOVMOVRSLTRSLT,ALAL;保存结果;保存结果MOVMOVAHAH,4CH4CHINTINT21H21HCODECODEENDSENDSENDENDSTARTSTART
24、返回本章首页返回本章首页v第第4 4章章 基本程序设计基本程序设计第18页,本讲稿共58页4.2 4.2 分支程序设计分支程序设计 分支程序使计算机具备判断能力,计算机可以根据给定的条件进行判断,并作分支程序使计算机具备判断能力,计算机可以根据给定的条件进行判断,并作出相应的处理,它可以把程序分成不同的处理段,实现情况不同的处理,从而使计出相应的处理,它可以把程序分成不同的处理段,实现情况不同的处理,从而使计算机具有一定的算机具有一定的思维思维能力。这是顺序程序所能不能实现的。所以,分支程序是能力。这是顺序程序所能不能实现的。所以,分支程序是程序的重要组成结构之一。汇编语言的分支主要由转移指令
25、实现,而过多的转移指程序的重要组成结构之一。汇编语言的分支主要由转移指令实现,而过多的转移指令会使程序的结构变得复杂,因而进行分支程序设计时进行合理安排是至关重要的。令会使程序的结构变得复杂,因而进行分支程序设计时进行合理安排是至关重要的。返回本章首页返回本章首页返回上一节返回上一节进入下一节进入下一节v第第4 4章章 基本程序设计基本程序设计第19页,本讲稿共58页4.2.1 4.2.1 单重分支单重分支 单重分支是最简单的分支结构,如果条件成立则完成某项操作,否单重分支是最简单的分支结构,如果条件成立则完成某项操作,否则执行其它操作或后续指令。其结构可以用图则执行其它操作或后续指令。其结构
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 程序设计 优秀 课件
限制150内