微机原理第八章微型计算机的程序设计ppt课件.ppt
《微机原理第八章微型计算机的程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《微机原理第八章微型计算机的程序设计ppt课件.ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第八章第八章 微型计算机的程序设计微型计算机的程序设计w顺序结构程序顺序结构程序w分支结构程序分支结构程序w循环结构程序循环结构程序w子程序结构子程序结构2重点重点: :w程序设计方法程序设计方法w顺序结构程序顺序结构程序w分支结构程序分支结构程序w循环结构程序循环结构程序w子程序结构子程序结构38.1 8.1 程序设计步骤程序设计步骤w1.1.分析问题分析问题w2.2.建立数学模型建立数学模型w3.3.确定算法确定算法w4.4.绘制程序流程图绘制程序流程图w5.5.内存分配内存分配w6.6.编制程序编制程序w7.7.程序调试程序调试4wdata segmentw a1 db hellon!
2、,0dh,0ah,$wdata endswStack1 segment para stackw.wStack1 endswcode segmentw assume cs:code,ds:data, ss:stack1w start:mov ax,dataw mov ds,axw mov ah,4chw int 21hwcode endsw end start数据段数据段堆栈段堆栈段代码段代码段58-1 8-1 顺序程序设计顺序程序设计补充:二进制编码的十进制数二进制编码的十进制数 就是BCD码(Binary Coded Decimal)。压缩BCD码 是用4位二进制数表示一位十进制数。一个字节
3、表示两位十进制数。如:1001 0110B 表示 96 D非压缩BCD码 是用一个字节表示一位十进制数。高4位总是0。如: 0000 1001B 表示 9D 两种BCD码的编码对照表6两种两种BCDBCD码的编码对照表码的编码对照表十进制数 压缩 BCD 码 非压缩 BCD 码 0 0000 0000 0000 1 0001 0000 0001 2 0010 0000 0010 3 0011 0000 0011 9 1001 0000 1001 10 0001 0000 0000 0001 0000 0000 11 0001 0001 0000 0001 0000 0001 12 0001 0
4、010 0000 0001 0000 0010 71. BCD数加法调整指令DAA和AAA(P196)wDAA-两个压缩BCD数相加调整指令:w(AL&0FH)9或者AF=1,则AL加6;w(AL&0F0H)90H或CF=1,则AL加60H;w如:MOV AX,3456HADD AL,AH; AL=8AHDAA ;AL=90H8wAAA-两个非压缩BCD数相加调整指令w若(AL&0FH)9或AF=1,则(AL+6)&0FH送AL,AH加1且CF置1;w否则:(AL&0F0H)送AL,AH不变且CF保持0不变;w如:MOV AX,0806H ADD AL,AH ; AL=0EH, AH=08H(
5、没变) MOV AH,0 AAA ;属于第1种情况,故AL为(AL+6)&0F=14H&0FH=04H; AH=01H9w【例【例8.1】的的程序段为程序段为: stack segment stack stack dw 32 dup(0) stack stack ends data segment W1 DW 8931H W2 DW 5678H SUM DB3 DUP(0) data ends codesegmentbegin proc farassume ss: stack, cs: code, ds:datapush dssub ax, axpush ax10mov ax, datamov
6、 ds, axMOV AL, BYTE PTR W1 ;AL=31H (+78H)ADD AL, BYTE PTR W2 ;AL=A9H, CF=0,AF=0DAA;BCD数加法调整指令数加法调整指令; AL=09H, CF=1MOV SUM, ALMOV AL, BYTE PTR W1+1 ; AL=89H (+56H)ADC AL, BYTE PTR W2+1 ;AL=E0H,CF=0,AF=1DAA ; AL=46H, CF=1MOV SUM+1, ALMOV SUM+2, 0 ;处理向万位的进位处理向万位的进位RCL SUM+2, 1 ;也可用指令;也可用指令ADC SUM+2, 0r
7、etbegin endpcode endsend begin11例8.2 非压缩BCD数W1与W2(均为字变量)相加,将其和送到SUM字节变量中。 data segment W1 DW 0809H ;即即89D W2 DW 0607H ;即即67D SUM DB3 DUP(0) ;一个字节放一个字节放1位位BCD码,用来放加完后的值码,用来放加完后的值156 data ends12MOV AX, W1 ;AX=0809H,W2为为0607HADD AL, BYTE PTR W2 ;AL=H, CF=0,AF=1AAA; 属于第一种情况,故属于第一种情况,故; AL为(为(AL+06H)&0FH
8、=10H+06H )&0FH; =16H&0FH=06H=AL; ;AH加加1且且CF置置CF=1,所以,所以AH=08H+1=09H,则,则AX=0906HMOV SUM, AL ;(SUM)=06HMOV AL,AH; AL=09HADD AL, BYTE PTR W2+1 ; AL=09H+06H=0FH,属于第,属于第1种情况种情况MOV AH, 0AAA ; AL=05H, AH=01H;第一种情况处理:;第一种情况处理:AL=(AL+06H)&0FH, 因因0FH+06H=15H,故,故AL=05H,AH=AH+1=0+1=01H,所以,所以AX=0105HMOV WORD PTR
9、 SUM+1, AX;(;(SUM+1)=05,(,(SUM+2)=01此句也可表达为此句也可表达为MOV SUM, ALMOV SUM, AL;见见P151P151132. BCD数减法调整指令DAS和DAA(自看,P198)wDAS-两个压缩BCD数相减调整指令:w(AL&0FH)9,则AL减6;w(AL&0F0H)90H,则AL减60H;w如:MOV AX,5634HSUB AL,AH; AL=DEH, 有借位DAS ;AL=78H,保持借位即134-56AAS-两个非压缩BCD数相减调整指令143. 非压缩BCD数乘除法调整指令AAM和AAD(P199,自看)15顺序程序设计举例:例7
10、.7 镜子程序,P183-184 data segment OBUF DB 0DH, 0AH, $ IBUF DB 0FFH, 0, 255 DUP(0) data ends16MOV DX , OFFSET OBUF ;MOV DX , OFFSET OBUF ;显示提示符显示提示符“”并回车换行并回车换行MOV AH , O9MOV AH , O9INT 21HINT 21HMOV DX , OFFSET IBUF ;MOV DX , OFFSET IBUF ;输入并显示字符串输入并显示字符串MOV AH , 10MOV AH , 10INT 21HINT 21HMOV BL, IBUF+
11、1MOV BL, IBUF+1MOV BH, 0MOV BH, 0MOV IBUFBX+2, $MOV IBUFBX+2, $MOV DL, 0AH ; MOV DL, 0AH ; 换行换行MOV AH, 2MOV AH, 2INT 21HINT 21HMOV DX , OFFSET IBUF+2 ; MOV DX , OFFSET IBUF+2 ; 再显示输入的字符串再显示输入的字符串MOV AH, 9MOV AH, 9INT 21HINT 21H178.2 分支程序设计w特点:利用改变标志位的指令和转移指令来实现。1.无条件转移指令:JMP (见P207)2.条件转移指令:Jcond sh
12、ort-label(偏移地址送到IP)特点:满足条件,则实现段内转移;80386开始才可以转移到代码段的任何位置。1819202122232425268.3 循环程序设计27288.3.2 重复控制指令1.LOOP short-label2.LOOPZ short-label 或或 LOOPE short-label3.LOOPNZ short-label 或或LOOPNE short-label4.JCXZ short-label5.JECXZ short-label共同点:均受共同点:均受CX或或EXC的值控制,详见的值控制,详见P214-215298.3.3 单重循环设计举例w例8.11
13、 计算Z=X+Y,其中X和Y是双字变量w分析:双字变量是4个字节,则和可能占5个字节303132333435363738作业8.4 编写求两个4位非压缩BCD数之和,将和送显示器显示的程序。(P261)w分析:分析:两加数各要4个字节单元,可以为DD类型;考虑到进位,和要5个字节单元,另外,输出到显示器的结束符号$需要一个单元存放,故共需6个字节。因此,数据段定义为:data segment W1 DD 01020304HW2 DD 05060708HSUM DB 5 DUP(0) DB $data ends39代码段中的核心语句MOV CX, 4MOV SI, 0MOV DI, 4; 要在要
14、在SUM+4中放个位,中放个位,SUM+0中放最高位的进位。中放最高位的进位。XOR AX, AX; 清清CFA1: MOV AL, BYTE PTR W1SI; ADC AL, BYTE PTR W2SIAAAMOV SUMDI, ALINC SIDEC DILOOP A1MOV SUMDI, 0RCL SUMDI; 以上是得到加的结果,放在以上是得到加的结果,放在SUM中。下面是输出到显示器的程序语句中。下面是输出到显示器的程序语句MOV DX, OFFSET SUMMOV AH, 09INT 21H 40作业8.5 编写求两个4位压缩BCD数之和,将和送显示器显示的程序。(P261)w分
15、析:分析:两个加数各要2个字节单元,可以为DW类型;考虑到进位,和要3个字节单元,另外,输出到显示器的结束符号$需要一个单元存放,故共需4个字节。因此,数据段定义为:data segment W1 DW 1234HW2 DW 5678HSUM DB 3 DUP(0) DB $data ends41代码段中的核心语句MOV CX, 2MOV SI, 0MOV DI, 2; 要在要在SUM+2中放个位,中放个位,SUM+0中放最高位的进位。中放最高位的进位。XOR AX, AX; 清清CFA1: MOV AL, BYTE PTR W1SI; ADC AL, BYTE PTR W2SIDAAMOV
16、SUMDI, ALINC SIDEC DILOOP A1MOV SUMDI, 0RCL SUMDI; 以上是得到加的结果,放在以上是得到加的结果,放在SUM中。下面是输出到显示器的程序语句中。下面是输出到显示器的程序语句MOV DX, OFFSET SUMMOV AH, 09INT 21H 42作业8.17 编写求输入算式加数1+加数2的和并送显。(加数及其和均为4位(即指压缩)BCD数,P262)w分析:要求先有屏幕显示输出加数1+加数2:,然后从键盘输入两个4个字节的BCD数,加完后送显。w用到的变量:W1和W2因为从键盘输入,均不确定是几位十进制,故需确定其最大位数不超过要用wW1 43
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 第八 微型计算机 程序设计 ppt 课件
限制150内