第五章 循环与分支程序设计
- 格式:pdf
- 大小:1.15 MB
- 文档页数:62
第5章循环与分支程序设计(一)例:把BX中的二进制数以十六进制的形式显示在屏幕上程序如下:data segmentmessage db"Hello World!",'$'data endscode segmentassume cs:code,ds:databegin:mov ax,datamov ds,axMOV AX,1234Hmov ch,4rotate:mov cl,4rol bx,clmov al,bland al,0fhadd al,30h;’0’~’9’ASCII 30H~39Hcmp al,3ahjl printitadd al,7h;’A’~’F’ASCII 41H~46Hprintit:mov dl,almov ah,2int21hdec chjnz rotatemov ah,4chint21hcode endsend begin实验观察如下:(二)例:从键盘接收十进制数并存入BX 程序如下:code segmentassume cs:code,ds:data begin:mov ax,datamov ds,axmov dx,offset messagemov bx,0 newchar:mov ah,1int21hsub al,30hjl exit;<0退出cmp al,9jg exit;>9退出cbwxchg ax,bxmov cx,10mul cxxchg ax,bxadd bx,axjmp newchar exit:mov ah,4chint21hcode endsend begin实验观察如下:(三)例:从键盘接收十六进制数并存入BX 程序如下:message db"Hello World!",'$' data endscode segmentassume cs:code,ds:data begin:mov ax,datamov ds,axmov dx,offset messagemov bx,0mov bx,0newchar:mov ah,1;键盘输入int21hsub al,30hjl exit;<0退出cmp al,10jl add_tosub al,27h;‘a’~‘f’cmp al,0ahjl exit;<‘a’退出cmp al,10hjge exit;>’f’退出add_to:mov cl,4shl bx,clmov ah,0add bx,axjmp newcharexit:mov ah,4chint21hcode endsend begin实验观察如下:(四)例:将正数n插入一个已整序的正数字数组程序如下:x dw?array_head dw3,5,15,23,37,49,52,65,78,99array_end dw105n dw32data endscode segmentassume cs:code,ds:databegin:mov ax,datamov ds,axmov ax,nmov array_head-2,0ffffhmov si,0compare:cmp array_end[si],axjle insert;<=则转移mov bx,array_end[si]mov array_end[si+2],bxsub si,2jmp short compareinsert:mov array_end[si+2],axmov ah,4chint21hcode endsend begin实验观察如下:(五)例:将首地址为A的字数组从小到大排序程序如下:a dw18,16,84,32,5data endscode segmentassume cs:code,ds:databegin:mov ax,datamov ds,axmov cx,5;元素个数dec cx;比较遍数loop1:mov di,cx;比较次数mov bx,0loop2:mov ax,A[bx];相邻两数cmp ax,A[bx+2];比较jle continuexchg ax,A[bx+2];交换位置mov A[bx],axcontinue:add bx,2loop loop2mov cx,diloop loop1`mov ah,4chint21hcode endsend begin实验观察如下:(六)例:有数组x(x1,x(x1,……,x10)和y(y1,y(y1,……,y10),编程计算z(z1,z(z1,……,z10)程序如下:x dw 1,2,3,4,5,6,7,8,9,10y dw 1,2,3,4,5,6,7,8,9,10z dw 10dup(?)logic_rule dw00dch ;0000,0000,1101,1100data ends code segment assume cs:code,ds:data begin:mov ax,data mov ds,ax mov bx,0mov cx,10mov dx,logic_rule next:mov ax,x[bx]shr dx,1jc subtract add ax,y[bx]jmp short result ;向前引用subtract:sub ax,y[bx]result:mov z[bx],ax add bx,2loop next mov ah,4ch int 21hcode endsend begin实验观察如下:。