●● 例5.2编写程序,计算Z=((W-X)/10*Y)的平方值,R为相除所得余 数,其中W,X,Y均为八位有符号二进制数。 ● 分析:这是一个简单的算术运算问题,编程之前首先根据运算对 象分配存储单元,然后针对运算对象选择操作指令。注意Z变量的 数据类型。 DATA SEGMENT MOV AL,X CBW W DB-128 MOV BX,AX X DB 127 MOV AL,W Y DB-100 CBW SUB AX,BX R DBO MOV BL,10 Z DD0 IDIV BL DATA ENDS MOVR,AH IMUL Y CODE SEGMENT IMUL AX ASSUME MOV WORD PTRZ,AX CS:CODEDS:DATA.SS:STACK MOV WORD PTR Z+2,DX BEGIN:MOV AX,DATA MOV AH,4CH INT 21H MOV DS,AX CODE ENDS ●● END BEGIN
例5.2 编写程序,计算Z=((W-X)/10*Y)的平方值,R为相除所得余 数,其中W,X,Y均为八位有符号二进制数 均为八位有符号二进制数 。 分析:这是一个简单的算术运算问题,编程之前首先根据运算对 象分配存储单元,然后针对运算对象选择操作指令。注意Z变量的 数据类型 。 DATA SEGMENT W DB -128 MOV AL,X CBW MOV BX AX W DB 128 X DB 127 Y DB -100 MOV BX,AX MOV AL,W CBW SUB AX BX R DB 0 Z DD 0 DATA ENDS SUB AX,BX MOV BL,10 IDIV BL DATA ENDS MOV R AH CODE SEGMENT ASSUME MOV R,AH IMUL Y IMUL AX MOV WORD PTR Z,AX CS:CODE,DS:DATA,SS:STACK BEGIN: MOV AX,DATA MOV WORD PTR Z,AX MOV WORD PTR Z+2,DX MOV AH,4CH INT 21H MOV DS, AX CODE ENDS END BEGIN 6
5.2分支结构程序设计 ●● 在程序中,往往需要对不同的情况或条件做出不同的处理,这样 的程序就不再是简单的顺序结构,而要采用分支结构。分支程 序结构可以有两种基本形式,即二路分支结构和多路分支结构, 如图5.2所示。 条 件 条 古- (a)二路分支结构 (b)多路分支结构 图5.2分支结构程序流程图
5.2 分支结构程序设计 在程序中,往往需要对不同的情况或条件做出不同的处理,这样 的程序就不再是简单的顺序结构,而要采用分支结构。分支程 序结构可以有两种基本形式,即二路分支结构和多路分支结构, 如图5.2所示。 条件 条件 …… (a)二路分支结构 (b)多路分支结构 图5.2 分支结构程序流程图 7
由图可知,这两种结构都只有一个入口和一个出口。。 不论哪一种形式,它们的共同特点是:运行方向 是向前的,在某一种确定的条件下,只能执行多 个分支中的一个分支。 分支程序常常利用比较指令和条件转移指令来实现。 80
由图可知,这两种结构都只有一个入口和一个出口。 不论哪一种形式,它们的共同特点是:运行方向 是向前的,在某一种确定的条件下,只能执行多 个分支中的一个分支。 分支程序常常利用比较指令和条件转移指令来实现。 8
5.2.1二路分支 例题5.3从键盘输入一位数字,判断其奇偶性, 并在屏幕输出一个标志,若为奇数,则输出1,否 则输出0。 分析:判断键入的一位数字的ASCII码的最低位是 否为1,若为1,则是奇数,否则是偶数。输入采 用D0S中断的1号子功能调用,键入的一位数字的 ASCII码放进AL中,此时只需将最低位移入状态寄 存器的CF标志位,然后对CF进行判断,即可确定 输入数字的奇偶性,输出采用D0S中断的2号子功 能调用。 889 9
5.2.1二路分支 例题5.3 从键盘输入一位数字 从键盘输入一位数字,判断其奇偶性, 并在屏幕输出一个标志,若为奇数,则输出1,否 则输出0。 分析:判断键入的一位数字的ASCII码的最低位是 否为1,若为1,则是奇数,否则是偶数。输入采 用DOS中断的1号子功能调用,键入的一位数字的 ASCII码放进AL中,此时只需将最低位移入状态寄 此时只需将最低位移入状态寄 存器的CF标志位,然后对CF进行判断,即可确定 输入数字的奇偶性 输入数字的奇偶性,输出采用DOS中断的2号子功 能调用。 9
程序如下 JMP DISP CODE SEGMENT EVN:MOV AL,30H ASSUME CS:CODE ;偶数,AL←一0的ASCI码 BEGIN:MOV AH,01H MOV BL,AL ;调用DOS中断的1号子功能 DISP:MOV AH,O2H: INT 21H 调用DOS中断的2号子功能,输出字符 ;AL←-键入数字ASCII MOV DL,OAH;输出换行 CLC INT 21H ;CF清O MOV DL,ODH;输出回车 RCR AL,1 INT 21H ● ;AL最低位移入CF MOV DL,BL;输出标志字符 JNC EVN INT 21H ;根据CF的状态,判断输入数字的 MOV AH,4CH;返回DOS 奇偶性 INT 21H MOV AL,31H CODE ENDS ;奇数,AL<-1的ASCⅡ码 END BEGIN 10
JMP DISP 程序如下 CODE SEGMENT ASSUME CS:CODE JMP DISP EVN:MOV AL, 30H ;偶数,AL←0的ASCII码 BEGIN:MOV AH, 01H ;调 用DOS中断的1号子功能 INT 21H MOV BL, AL DISP:MOV AH, O2H : INT 21H 调用DOS中断的2号子功能,输出字符 ;AL←键入数字ASCII CLC 调用DOS中断的2号子功能,输出字符 MOV DL, 0AH ;输出换行 INT 21H ;CF清0 输出回车 RCR AL, 1 ;AL最低位移入CF MOV DL, 0DH ;输出回车 INT 21H ;AL最低位移入CF MOV DL, BL ;输出标志字符 JNC EVN ;根据CF的状态,判断输入数字的 奇偶性 INT 21H MOV AH, 4CH ;返回DOS INT 21H MOV AL, 31H ;奇数,AL←1的ASCII码 INT 21H CODE ENDS END BEGIN 10