微机原理与单片机应用课件:第7章 汇编语言程序设计_第1页
微机原理与单片机应用课件:第7章 汇编语言程序设计_第2页
微机原理与单片机应用课件:第7章 汇编语言程序设计_第3页
微机原理与单片机应用课件:第7章 汇编语言程序设计_第4页
微机原理与单片机应用课件:第7章 汇编语言程序设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、第 六 章 微 机 程 序 设 计 一、简单程序 自上而下的程序设计方法1例1:拆字程序 2流程图 3程序 MOVAX,1000H;MOV DS,AX;数据段基址DS=1000HMOV SI,50H;需拆字的指针SI=50HMOVAL,SI;取字节给ALANDAL,0FH;屏蔽高4位MOVSI+1,AL;得到的数据存入10051MOVAL,SI;再取出需拆字的字节MOV CL,4;SHRAL,CL;逻辑右移4次,高4位补0MOVSI+1,AL;存入10052单元4例2 算术运算: 编程计算z=(x2-3y)/2。设x,y为单字节正整数,结果z用2个字节来存放。DATA SEGMENTX DB

2、25Y DB 32Z DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAEXPRE PROC FARSTART: PUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV AL,X MUL AL MOV BL,Y ADD BL,BL ADD BL,Y MOV BH,0 SUB AX,BX SHR AX,1 MOV Z, AX RETEXPRE ENDPCODE ENDSEND START5二、分支程序 1。 用比较(CMP) 数据操作(+ -* / ) 测试(TEST) 逻辑操作等指令来改变标志位2。用

3、条件转移指令造成分支。 6条件转移指令8086提供了30条条件转移指令,基本格式为: Jcc 其中,“J”是条件转移指令操作码的第一个字母,后面的“cc”是代表转移的条件。若条件成立,则程序转移至由标号标识的指令处执行。若条件不满足,则顺序执行下条指令。1)简单条件转移指令简单条件转移指令是将单个标志位的状态作为条件来判断,决定是否转移。共有5个标志位,即CF、ZF、OF、PF和SF。该类指令共有14,其功能见表5-10。782)无符号数条件转移指令 两个无符号数的比较结果通过CF,ZF反映出来,代表转移条件的字母:A(Above,高于)、B(Below,低于)、E(Equal,等于)。其指令

4、有8条,见表5-10。93)带符号数条件转移指令 两个有符号数的比较结果通过OF,SF,ZF反映出来:G (Greater,大于)、L (Less,小于)、E (Equal,等于)。其指令有8条,见表5-10。10例3求AX与BX两个无符号数之差的绝对值。 AXBX 2800H 11a. 流程图 12b 程序 MOVDI,2800H;数据指针指向2800HCMPAX,BX;比较AX,BX(AXBX)JC AA;CF=1(借位)转移SUB AX,BX;计算AXBX AXMOVDI,AX;存入2800HJMPSTOP;至结束(不要忘记!) AA:SUBBX,AX;计算BXAX BXMOV DI,B

5、X;存入2800HSTOP:HLT;结束13例4(多分支程序) 从外设71H号端口取一个数M,如M=20, 送数0FFH给外设端口73H;如10= M 20, 送数 88H给外设端口73H;如 M 10, 送数 0H给外设端口73H。 存在两次判断1.M=20 ?有两次分支。 14 程序 START:INAL,71H;从端口71H取数CMPAL,10;与10比较(AL10)JC LP1;CF=1(借位)小于10 转移CMP AL,20;与20比较(AL20);JCLP2;CF=1(借位)小于20 转移MOVAL,0FFHLP3:OUT 73H,AL;输出0FFH73H端口JMPSTOP;至结束

6、LP1:MOVAL,0;AL73H端口JMPSTOP;至结束LP2:MOVAL,88H;AL73H端口STOP:HLT;结束15三、循环程序 16循环程序结构 17 例5两个多字节数求和。 MOV SI,1000H ;置被加数指针 MOV DI,2000H ;置加数指针 MOV CX,4 ;数据字节个数 CLC ;清进位标志 AGAIN:MOV AL,SI ;取被加数 ADC AL,DI ;加 加数 MOV SI,AL ;和送回至加数 INC SI ;修改数据指针 INC DI LOOP AGAIN ;记数1=0? ;循环控制及判别结束条件 初始化循环主体18子程序 2。参数的传递 a.入口参

7、数 b.出口参数3。现场的保护与恢复 1。结构 19例6从10050H到100B3H存放了100个单字节带符号数,找出最大值,存入100B4H单元中 20程序(主程序)START:MOVSI,50H;置数据指针MOV MOVAL,0HCX, 100;先置AL为可能的最小值; 循环次数AGAIN:CALL COMP;调用比较大小子程序INCSI;修改指针LOOPAGAIN;再与下个数比,直至比完MOVSI,AL;将最大值存入100B4HHLT;结束21程序(子程序)COMP:PUSHF;比较AL与内存数据大小PUSHBX;保护现场MOVBL,SI;取内存数据CMPAL,BL;将AL与之比较JGB

8、ACK;若ALBL 返回(带符号)MOVAL,BL;否则,用BL替换ALBACK:POPBX;恢复现场POPFRET;返回22例七 查表程序23查表程序1:已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。STACK SEGMENT STACK DB 200 DUP(0)STACKENDSDATASEGMENT TAB DB 80,85,86,71,79,96 DB 83,56,32,66,78,84 NODB 10 ENGLISTDB ?DATAENDSCODESEGMENTASSUME DS:DATA,

9、 SS:STACK, CS:CODEBEGIN:MOV AX,DATA MOV DS ,AX LEA BX,TAB MOV AL,NO XLAT TAB MOV ENGLISH,AL MOV AH,4CH INT 21HCODEENDSENDBEGIN24查表程序2:利用查表法求Y=X3。设X放在数据区XVAL单元,结果存入YVAL单元。立方表放在从TABLE开始的单元。DATA SEGMENTTABLE DB 0,1,8,27,64,125,216XVAL DB 6YVAL DB ?DATA ENDSSTACK SEGMENT STACK DB 50 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FAR PUSH DS MO

温馨提示

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

评论

0/150

提交评论