第2节 顺序程序设计
推荐给好友
打印
加入收藏
更新于2009-06-01 10:59:07

下面举例说明顺序程序的设计。
【例4.1】试编写一程序计算以下表达式的值。
w=(v-(x*y+z-540))/x   
式中x、y、z、v均为有符号字数据。
设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如下图所示。


源程序如下:
DATA SEGMENT
X DW 200
Y DW 100
Z DW 3000
V DW 10000
W DW 2 DUP(?)
DATA ENDS
STACK SEGMENT STACK
               DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
              ASSUME DS:DATA,CS:CODE,SS:STACK
START: MOV AX,DATA 
                   MOV DS,AX ;DATA→AX 
                   MOV AX,X 
                   IMUL Y ;(X)*(Y)→DX:AX 
                   MOV CX,AX 
                   MOV BX,DX ;(DX:AX)→(BX:CX) 
                   MOV AX,Z 
                   CWD ;(Z)符号扩展 
                   ADD CX,AX 
                   ADC BX,DX ;(BX:CX)+(DX:AX)→(BX:CX) 
                   SUB CX,540 
                   SBB BX,0 ;(BX:CX)-540→(BX:CX) 
                   MOV AX,V
CWD ;(V)符号扩展
                  SUB AX,CX 
                  SBB DX,BX ;(DX:AX)-(BX:CX)→(DX:AX) 
                  IDIV X ;(DX:AX)/X 
                  MOV W,AX ;商→W 
                  MOV W+2,DX ;余数DX→W+2 
                  MOV AH,4CH 
                  INT 21H
CODE ENDS ;退出DOS 状态 
                  END START

【例4.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下:
STACK SEGMENT STACK
DB        200 DUP(0)
STACK ENDS
DATA SEGMENT
TAB       DB 80,85,86,71,79,96 
              DB 83,56,32,66,78。84
NO        DB 10
ENGLIST DB?
DATA ENDS
CODE SEGMENT
              ASSUME DS:DATA,SS:STACK,CS:CODE
BEGIN: MOV AX,DATA
                  MOV DS ,AX 
                  LEA BX,TAB 
                  MOV AL,NO 
                  DEL AL 
                  XLAT TAB 
                  MOV ENGLISH,AL 
                  MOV AH,4CH 
                  INT 21H
CODE ENDS 
                  END BEGIN

 

上一节                    下一节

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.