基本汇编语言程序设计.ppt_第1页
基本汇编语言程序设计.ppt_第2页
基本汇编语言程序设计.ppt_第3页
基本汇编语言程序设计.ppt_第4页
基本汇编语言程序设计.ppt_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、封面,第5章,程序控制结构及其计程仪编程,第2,5章基本汇编语言计程仪编程,第5章基本汇编语言计程仪编程5.1计程仪编程5.2分支计程仪编程5.3环路编程本章要点和练习问题分析,3、 5.1虽然序列计程仪柱不常见,除非计程仪编程指令计程仪柱中的计程仪编程解决非常简单的问题,但是序列计程仪柱通常是复杂计程仪柱结构的一部分,例如是分支构造中的一个分支、循环结构的循环体等。4、例5.1、例5.1 :设置3个字变量x、y和z,求出3个之和,将结果存储在字变量w中。 数据段xdw5ydw6zdw7wdw? datasendscodessegmentassumecs :代码,ds :数据,ss :堆栈

2、启动3360 mov AX,数据mov ax,ax,mov ax。 将一个字节的压缩BCD查询密码转换为两个ASCII查询密码,其中ax MOV AH,4ch int 21h代码终端启动,5,【示例5-3】。 分析: 1字节的压缩BCD查询密码用1字节的二进制数字表示2位的10进制,例如用10进制96表示压缩BCD查询密码为96H,转换为ASCII查询密码时,将用压缩BCD查询密码表示的10进制的上位和下位分开,用ASCII查询密码表示时,转换为39H和36H。 数据分段bcdbuf db 96 h; 一个字节的压缩BCD查询密码ASCBUF DB 2DUP (? ); 定义2字节的结果单元d

3、ataendscodesegmentassumecs 3360代码、ds 3360数据开始: mov ax、数据mov ds、AX MOV AL、BCDBUF; 取出BCD查询密码MOV BL,AL。 BL暂时保存MOV CL、4 SHR AL、CL; 上位4二进制位为下位4二进制位,上位4二进制位补充0(96H09H) ADD AL、30H。 变成ASCII查询密码(39H ),7,MOVASCBUF,AL。 保存第一个ASCII查询密码ANDBL,0FH。 屏蔽上位4二进制位,仅留下下位4二进制位(96H06H) ADDBL、30H。 成为BCD查询密码定(36H) MOVASCBUF 1

4、,BL。 第2个查询密码MOVAH、4ch int 21 h code end start、8、【例5-4】将牛鼻子板输入的1位的10进制(09 )直接用显示查找表法变换为对应的平方值,并保存至SQRBUF用户针织面料。 分析: 09的平方值分别为0、1、4、9、16、25、36、49、64、81。 合并平方值制作1个平方值表,从输入的值和对应的平方值存在的单元地址的关系(对输入到开头地址的值进行加法运算),检测对应的平方值。 9、datasegmentsqutabdb0、1、4、9、16、25、36、49、64、81squbufdb? dataendscodesegmentassumecs

5、:代码、ds 3360数据开始: MOVDS、数据、10、MOVDS、AX MOVBX、OFFSETSQUTAB; 平方表起始地址MOVAH、1 INT21H; 从牛鼻子板输入个数,得到其ASCII查询密码SUBAL,30H。 从ASCII查询密码获得对应数量的XLAT的显示查找表MOVSQUBUF、AL; 结果MOVAH,4CH INT21H CODEENDS END START,11,5.2分支计程仪编程,4.2分支计程仪编程条件迁移指令Jcc和无条件迁移指令JMP用于实现方案的分支构造,JMP不测试条件, Jcc不通讯端口条件等式,以当前的标志二进制位的状态为条件,因此在Jcc之前必须配

6、置定径套标志二进制位的指令,例如加减运算、比较、测试等指令。 基本分支类型分为单分支和双分支。 对于同样的问题,根据选择的条件,单枝结构的程序流程图有2种画法,对应的程序也有2种画法。 例如,校正AX的带符号数量的绝对值。13、单早午餐、cmp ax、0 jgenonegnegaxnoneg 3360 mov result、ax、cmp ax、0 jngeyesnegjmpdoneyesneg : negaxdone 3360程序流程图中分支体的位置为普勒计程仪的实际顺序、15、双早午餐、双早午餐示例:显示BX的顶部。shl bx、1 jc one; 分支体mov dl,0; 分支体1 jmp

7、 next; 到后续操作One: mov dl,1。 分支体2 next: mov ah,2; 以后操作int 21h .分支计程仪程序的其他问题的若干个2分支问题,可以首先假定1个状况,将2分支变更为1分支问题。 如上例所示,首先假设BX的最上位为0,如果分支外准备显示0的最高有效位为0,则可以直接跳转到后续操作,如果最上位为1,则需要执行分支体。 mov dl、0 shl bx、1 jnc next mov dl、1 next:mov ah、2 int 21h、16、多分支、分支的嵌套形式多分支、嵌套形式多种多样。 例1 :设求出编码函数1的X0 Y=0、X=0 -1为X0,则实际上是2分

8、支的组合。 判断17、多分支、例2:al的各二进制位的值,转移到D0=1、L0。 向D1=1、L1转移。 也可以考虑转移到D2=1、L2,作为2分支的组合,但是为了使预计程仪编程简单,在左图的分支构造中能够在数据段设置迁移地址表,使用例题4.4、18、多分支,例子5.4使用地址表将多分支设为8分支的符号分别设为disp1、disp2在符号级设为disp1:mov dx、disp2:mov在符号级设为disp1的偏移地址为2300h、disp2的偏移地址为2500h。 数据段有tabel dw disp1、disp2、19、5.3.3啤酒花表法分支计程仪程序两种结构形式,可以用上述方法实现。 并

9、且,在实现CASE结构时,利用跳过表法,还能够根据不同的条件使程序计程仪转移到多个程序分支。 以下举例说明。 【例5-6】根据al暂存器的哪个二进制位是1 (从下位到上位),尝试将计程仪项目移至8个不同的项目群分支。 20、以下是用目录索引寻址方式实现啤酒花表法的计程仪方案,使用暂存器间和基地址目录索引方式也可以达到相同的目的。 虽然这些个的三种方法没有本质上的不同,但是其中重要的JMP指令使用的寻址方式不同。 跳转表法是有用的分支程序设定修正方法,必须通过例子掌握要领并灵活运用。 用目录索引地址方式实现跳跃表法的步骤:21,datasegmentdatatabdwroutine _1dw路由

10、_2dw路由_3dw路由_4dw路由_5dw逻辑右移位JNBNOT_YET; 如果CF=0,则跳到JMPDATATABSI NOT_YET:ADDSI、类型数据tab。 TYPE是检查存储单元BYTE是1 WORD是2 DWORD是4 jmplpcont:routine _ 1: routine _ 23360,23,ret main endp code end start,24循环整体部分:反复执行的查询密码循环控制部:判断循环条件,决定是否继续。 2、两个环结构1 )“先循环,后判断”结构是高级语言的“至型”环(DO-UNTIL) 2)“先判断,后循环”结构(DO-WHILE )是高级语言

11、的、25、2种循环结构、26、循环计程仪项目设定纠正、3 .循环计程仪项目设定纠正循环计程仪周期数已知:可进行LOOP指令、CX计数。 如教材例3-74(P85 )。 循环次数和ZF标志:可使用LOOPZ、LOOPNZ指令。 周期次数不明:通常采用各种条件转变命令实现周期控制。 像教材例4.7那样,字符串以0结束的例4.9,字符串以$结束。 27、例题分析、循环计程仪程序例题分析:例5.5 :修正100个数字之和。 仅循环次数控制,循环次数已知且比较简单。 例5.6 :在一个字变量中确定1的最低位数。 从最低到最高依次测试,最多测试16次某1测试即可结束普计程仪程序,测试结果用ZF标志反映,因

12、此可以用循环或循环z控制循环(结果不是0,而是结束)。 示例5.7 :将一个字符串中的所有大写字母更改为小写字母,字符串以0结尾。由于周期数不明,请使用条件判定控制周期循环结构请使用“先判断后执行”的结构。通常,在采用条件判定控制周期时,多采用“先判断后执行”的周期结构。28、例题5.6、例5.6 :在一个字变量中确定1的最低位。 启动mov ax、wordX; 测试营销对象发送AX mov cx、16。 周期计数器定径套初始值mov dl,-1; 计数器位置初始值again : Inc dl测试ax,1; ax1 ror ax,1; 小周期右移、周期指令不影响ZF loope again。

13、CX0且ZF=1(测试二进制位为0 ),表示没有基础; 继续循环。 结束循环,但0标志成立,没有1 mov字节、dl jmp done not found 3360 mov字节、-1。 ZF=1,16二进制位都是0 done:exit 0 end,29,例题5.7/1,例子5.7 /将一个字符串中的所有大小写更改为小写,字符串以0结尾。 数据字符串数据库http:/www.B /小毛毛/http:/www.B /小毛毛/http:/www.B /小毛毛/xxx、0 .代码启动模式bx、偏移字符串增益3360模式al、bx。 取一个字母or al,

14、al。 是否为0 jz done终止符,退出循环,30,/2,cmp al,a; 是否为大写字母AZ jb next cmp al、Z ja next or al、20h。 是,转换成小写字母(d5=1)的movbx,al。 保存到原来的位置next: inc bx jmp again; 后续的环路done:exit 0 end,31、双重环路结构,4 .多重循环:环路计程仪拉姆嵌套构成多重(多层)环路。 最常见的多重循环是双循环。 32、鼓泡法排序,例5.8 :“鼓泡法”排序(升序)。 当从第一个元素开始将阵列中的两个相邻元素进行比较,将小值的元素放置在前面,将大值的元素放置在后面,当完成比

15、较时,最大的数量变成该阵列中的最后的元素,并且一些小的数量可以上升到一个位置,如气泡。 n个数经过n-1回合的比较,完成排序。 本章目录,33,冒泡法排序,例5.8冒泡排序法实现升序排序。 本章目录,34,例5.8排序/1,例5.8无符号字节对齐要素从小到大排序。 dataarraydb6、5、16、84、32计数equ ($-array )/(类型阵列).codemovcx、计数。 CX数组元素数dec cx; 从元素体个数减去1则外周期次数outlp:mov dx,cx; DX内循环次数mov bx,偏移阵列inlp : mov al,bx; 取前一要素cmp al、bx 1与下一要素的比

16、较jna next; 如果上一个元素小于或等于下一个元素,则不更换xchg al、bx 1;否则,不更换mov bx、al next:inc bx; 以下要素dec dx jnz inlp; 内循环尾loop outlp; 外部回圈的结尾为35、5.4.4栏的操作计程仪程式字串是特殊的线性表格,其中资料元素只有一个字元。 字符串长度:一个字符串中字符数长度为零的字符串称为空字符串,不包含字符,通常用单引号/双引号括起来: AB abcd字符串定义: str1iamastudentstr1iama teacher $,36, 求字符串的操作基本操作字符串的长度字符串的比较字符串的连接部分字符串组合操作插入部分字符串删除检索置换,37,例1:datassegmentstrdbiliveinkuangchow,00H LEN DB? 此处是段查询密码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论