




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
例:有数组x(x1,x2,……,x10)和y(y1,y2,……,y10), 编程计算z(z1,z2,……,z10) z1=x1+y1 z2=x2+y2 z3=x3-y3 z4=x4-y4 z5=x5-y5 z6=x6+y6 z7=x7-y7 z8=x8-y8 z9=x9+y9 z10=x10+y10xdwx1,x2,x3,x4,x5,x6,x7,x8,x9,x10 ydwy1,y2,y3,y4,y5,y6,y7,y8,y9,y10 zdwz1,z2,z3,z4,z5,z6,z7,z8,z9,z10 logic_ruledw00dch;0000,0000,1101,1100 …… movbx,0 movcx,10 movdx,logic_rule next:movax,x[bx] shrdx,1 jcsubtract addax,y[bx] jmpshortresult;向前引用 subtract: subax,y[bx] result:movz[bx],ax addbx,2 loopnext ……;查表法,实现一位16进制数转换为ASCII码显示 datasegment ASCIIdb30h,31h,32h,33h,34h,35h db36h,37h,38h,39h ;0~9的ASCII码 db41h,42h,43h,44h,45h,46h;A~F的ASCII码 hex db0bh;任意设定一个待转换的一位16进制数 dataends codesegment mainprocfar assumecs:code,ds:data start: pushds xorax,ax pushax movax,data movds,ax ;------------- movbx,offsetASCII ;BX指向ASCII码表 moval,hex ;AL取得一位16进制数,正是ASCII码表中位移 例:将正数n插入一个已整序的正数字数组。该数组的 首地址和末地址分别为ARRAY_HEAD,ARRAY_END。●由于数组已经排好序,因此可以将正数n依次和数组中的数进行比较,比较有个方向问题,这里假设数组在存储单元中按地址递增的方向从小到大依次存放。不妨从大数开始进行比较,当遇到第一个比n小的数,记下该位置,该位置就是要插入n的位置。 ●找到出入位置后,如何在不破坏原来数据顺序基础上插入n呢?打个比方:9个同学按高矮依次做在1~10号椅子上,现在第10个同学按照高矮要做在第5号椅子上,那么如何空出第5号椅子呢,但仍然保持高矮次序?只要9号同学移到10号,910,89,78,67,56就可以了。同样,我们可以如法炮制,数组中将要插入数n位置前的数依次前移一个位置(两个字节),空出要插入位置,将n放入即可。 ●在插入数时,可能遇到特殊情况,即数n比数组中所有的数都要大,或者小。若比所有的数都大,就不需要移动原数组中的数,直接插入即可;若比所有的数都小,就将数n放在数组的首位置。很显然,查找位置和空出位置的过程就是循环比较的过程,因此采用循环结构来实现,那么,循环条件如何确定呢?其中一种比较容易想到循环条件就是:数组长度(或数组首地址)及K<=n,其中K为依次从数组中取出的一个数。 另外,可以充分利用题目中的已知条件即数组中的数均为正数,所以我们可以在数组的开始的前一个位置存放一个负数,不妨存放数-1,这样,在循环控制时就不需要用数组长度来进行控制,可以进一步简化程序的设计。而且需要注意的是,有可能一次都不需要移动数组中的数。因此,应选择DO—WHILE结构形式。合肥学院计算机科学与技术系何立新《汇编语言程序设计》xdw? array_headdw3,5,15,23,37,49,52,65,78,99 array_enddw105 ndw32例:把BX中的二进制数以十六进制的形式显示在屏幕上分析:(1)程序结构的确定 由题意应该把BX的内容从左到右每4位为一组在屏幕上显示出来,显然这可以用循环结构来完成,每次显示一个十六进制数位,因而循环次数是已知的,计数值为4。…… movch,4;初始化 rotate:movcl,4 rolbx,cl moval,bl andal,0fh addal,30h;’0’~’9’ASCII30H~39H cmpal,3ah jlprintit addal,7h;’A’~’F’ASCII41H~46H printit:movdl,al movah,2 int21h decch jnzrotate ………… movcx,4;初始化 rotate:pushcx movcl,4 rolbx,cl moval,bl andal,0fh addal,30h;’0’~’9’ASCII30H~39

ys****39
实名认证
内容提供者


最近下载