如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
循环程序设计分支程序设计分支结构子程序结构编制汇编语言程序的步骤:1.循环程序设计初始化:设置循环的初始状态循环体:循环的工作部分及修改部分控制条件:计数控制特征值控制地址边界控制BX……movch,4rotate:movcl,4rolbx,clmoval,blandal,0fhaddal,30h;’0’~’9’ASCII30H~39Hcmpal,3ahjlprintitaddal,7h;’A’~’F’ASCII41H~46Hprintit:movdl,almovah,2int21hdecchjnzrotate…………movbx,0newchar:movah,1;键盘输入int21hsubal,30hjlexit;<0退出cmpal,9jgexit;>9退出cbwxchgax,bxmovcx,10mulcxxchgax,bxaddbx,axjmpnewcharexit:…………movbx,0newchar:movah,1;键盘输入int21hsubal,30hjlexit;<0退出cmpal,10jladd_tosubal,27h;‘a’~‘f’cmpal,0ahjlexit;<‘a’退出cmpal,10hjgeexit;>’f’退出add_to:movcl,4shlbx,clmovah,0addbx,axjmpnewcharexit:……xdw?array_headdw3,5,15,23,37,49,52,65,78,99array_enddw105ndw32movcx,5;元素个数deccx;比较遍数loop1:movdi,cx;比较次数movbx,0loop2:movax,A[bx];相邻两数cmpax,A[bx+2];比较jlecontinuexchgax,A[bx+2];交换位置movA[bx],axcontinue:addbx,2looploop2movcx,dilooploop12.分支程序设计例:有数组x(x1,x2,……,x10)和y(y1,y2,……,y10),编程计算z(z1,z2,……,z10)z1=x1+y1z2=x2+y2z3=x3-y3z4=x4-y4z5=x5-y5z6=x6+y6z7=x7-y7z8=x8-y8z9=x9+y9z10=x10+y10xdwx1,x2,x3,x4,x5,x6,x7,x8,x9,x10ydwy1,y2,y3,y4,y5,y6,y7,y8,y9,y10zdwz1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_ruledw00dch;0000,0000,1101,1100……movbx,0movcx,10movdx,logic_rulenext:movax,x[bx]shrdx,1jcsubtractaddax,y[bx]jmpshortresult;向前引用subtract:subax,y[bx]result:movz[bx],axaddbx,2loopnext……datasegmentarraydw12,11,22,33,44,55,66,77,88,99,111,222,333numberdw55low_idxdw?high_idxdw?dataends12112233445566778899111222333……leadi,arraymovax,number;要查找数cmpax,[di+2];(ax)与第一个元素比较jachk_lastleasi,[di+2]jeexit;(ax)=第一个元素,找到退出stcjmpexit;(ax)<第一个元素,未找到退出chk_last:movsi,[di];元素个数shlsi,1;计算最后一个元素addsi,di;的地址cmpax,[si];(ax)与最后一个元素比较jbsearchjeexit;(ax)=最后一个元素,找到退出stcjmpexit;(ax)>最后一个元素,未找到退出compare:cmpax,[bx+si]jeexitjahigherdeccxmovhigh_idx,cxjmpmidhigher:inccxmovlow_idx,cxjmpmidno_match:stcexit:……12112233445566778899111222333算法2例:根据AL寄存器中哪一位为1(从低位到高位),把程序转移到8个不同的程序分支……cmpal,0;AL为逻辑尺j