- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. 对于这种问题,也可用循环程序结构来完成。已知循环计数值为10,每次循环的操作数是可以顺序取出的,但所作的操作却有所不同,这里有加法和减法两种操作。为了区别每次应该做哪一种操作,可以设立标志位,如标志位为0做加法,为1则做减法。这样,进入循环后只要判别标志位就可确定应该做的操作了。显然,这里要做10次操作就应该设立10个标志位,我们把它放在一个存储单元LOGIC_RULE中,这种存储单元一般称为逻辑尺。本例设定的逻辑尺为 0000000011011100 . 从低位开始所设的标志位反映了每次要做的操作顺序,最高的6位没有意义。程序框图如图5.13所示。 . 图5.13 例5-12的程序框图 . TITLE 例5-12程序 DATA SEGMENT X DW X1,X2,X3,X4,X5,X6,X7,X8,X9,X10 Y DW Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y10 Z DW Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10 LOG_RU DW 00DCH DATA ENDS CODE SEGMENT MAIN PROC FAR . ASSUME CS: CODE,DS: DATA START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV BX,0 MOV CX,10 MOV DX,LOG_RU . NEXT:MOV AX,X[BX] SHR DX,1 JC SUBT ADD AX,Y[BX] JMP SHORT RESULT SUBT: SUB AX,Y[BX] RESULT: MOV Z[BX],AX ADD BX,2 LOOP NEXT RET MAIN ENDP CODE ENDS END START . 本例中X1~X10,Y1~Y10,Z1~Z10均需采用实际数值才可运行 这种设置逻辑尺的方法是很常用的。例如,在矩阵运算中,为了跳过操作数为0的计算,经常采用这种方法。又如,把一组数据存入存储器时,如果其中数值为0的元素很多,也可用这种方法设立一个每位表示一个下标的逻辑尺(这样的逻辑尺可能占有几个字,由数组的长度确定),0元素就可不占用存储单元了。 . 在例5-12中,每个标志只占一位,如果要表示的特征数更多,则每个标志可占用几位,而在处理方法上是完全相同的。设立标志位的方法除了如逻辑尺那样可静态地预置外,还可以在程序中动态地修改标志位的值,以达到控制的目的。下例将说明这种方法。 . 【例5-13】 试编制一程序。从键盘输入一行字符,要求第一个键入的字符必须是空格符。如不是,则退出程序;如是,则开始接收键入的字符并顺序地存放在首地址为BUFFER的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。这一程序要求接收的字符从空格符开始又以空格符结束,因此程序中必须区分所接收的字符是否为第一个字符。为此,设立作为标志的存储单元FLAG。一开始将其置为0,接收第一个字符后可将其置1。整个程序的框图如图5.14所示。 . 图5.14 例5-13的程序框图 . TITLE 例5-13程序 DATA1 SEGMENT BUFFER DB 80 DUP(?) FLAG DB ? DATA1 ENDS CODES SEGMENT MAIN PROC FAR ASSUME CS:CODES,DS:DATA1 . START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA1 MOV DS,AX LEA BX,BUFFER MOV FLAG,0 . NEXT: MOV AH,01 INT 21H TEST FLAG,01H JNZ FOLLOW CMP AL,20H JNZ EXIT MOV FLAG,1 JMP NEXT
文档评论(0)