预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第5章循环与分支程序设计5.1分支程序设计例:实现把一位十六进制数转换为对应ASCII码的程序。分析:对应关系X+30H(0<=X<=9)Y=X+37H(0AH<=X<=0FH)DATASEGMENTDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,4CHINT21HCODEENDSENDSTART例:设程序每次接收一个单键命令A至H,然后根据命令进行相应处理。否则不处理。分析:1.这是一个多分支选择结构,如果用C语言实现为程序2.汇编语言实现多分支选择结构,多采用地址表的方法,实现安排一张入口地址表,存放入口地址的偏移地址。见程序段。MOVAH,1INT21HANDAL,11011111BCMPAL,’A’JBOKCMPAL,’H’JAOKSUBAL,’A’XORAH,AHADDAX,AXMOVBX,AXJMPCOMTAB[BX]….OK:MOVAH,4CHINT21HCOMA:…..JMPOK…..COMH:….JMPOKchara;a=Getchar();Switch(a):{case‘a’:case‘A’:COMA();break;case‘b’:case‘B’:COMB();break;……case‘H’:COMH();break;}返回DATASEGMENT……COMTABDWCOMA,COMB,COMC,….DATAENDS返回5.2循环程序设计例:在ADDR单元中存放着数Y的地址,试编制一程序把Y中1的个数存入COUNT单元中。DATASEGMENTADDRDWNUMBERNUMBERDWYCOUNTDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,4CHINT21HCODEENDSENDSTARTCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,4CHINT21HCODEENDSENDSTART例:写程序把一个字符串中的所有的大写字母转换为小写字母,设字符串以0结尾。DATASEGMENTSTRINGDB‘HOWAREYOU!’,0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXAGAIN:OK:MOVAH,4CHINT21HCODEENDSENDSTART