⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 循环.txt

📁 会变语言实现的一些程序
💻 TXT
字号:
汇编循环程序设计学习笔记
               金州2005.11.15

说明,因为这是自己的学习笔记,有众多的不完善的地方,只建议喜欢汇编的朋友参考,并帮助我,
不能作为学习资料,凡是标明金州注释的地方,是自己解释的,有可能错误,特意标出来,
DO_WHILE 结构:初始化 ——控制条件——循环体
明显的,如果控制条件不满足,将不执行循环体,可能循环体一次都不执行,可能为0
DO_UNTIL结构,初始化——循环体——控制条件
可以看出循环体至少执行一次,

例如,把BX中的二进制数以十六进制的形式显示在屏幕上
.....
mov ch, 4
rotate:  mov cl, 4
rol bx, cl
mov al, cl
mov al, bl
and al, 0fh
add al, 30h

cmp al, 3ah
jl  printit
add al, 7h
printit:  mov dl, al
mov ah, 2
int 21h 
dec ch
jnz rotate

计数控制,已经知道循环四次。

例如二,将正数n插入一个已整序的正数字数组
x dw ?
array_head dw 3,5,15,23,37,49,52,65,78,99
array_end dw 105
n dw 32
.......
mov ax, n
mov array_head-2,offffh           (-1的补码,金州注释,是个负数就行)
mov si, 0
compare:
cmp array_end[si],ax
jle insert                   (<=就插入,金州注释)
mov bx,array_end[si]          (si 是数组的末指针,金州注释)
mov array_end[si+2],bx
sub si,2
jmp short compare
insert:
mov array_end[si+2],ax

关键要有边界控制,这样才能跳到insert,或者就很不幸了:)),会陷入死循环了。
这个片段的关键在于插入在那个位置,一一比较,并不知道循环多少次,

例如三,多重循环,外循环,套入内循环
将首地址为a 的字数组从大到小排序。(起泡排序算法,多重循环)
(明显的是一个需要多重循环比较的程序,金州注释)

a dw 100,30,78.99,15,-1,66,45,189,256         (定义变量,金州注释)
.......
mov cx, 10                (因为用到loop,需要用cx,注意因为是多重,cx会改变,需要保存)
dec cx                     (减1变为9,金州注释)
loop1: mov di, cx          (保存 cx, 用di作为周转,金州注释)
mov bx,0
loop2: mov ax, a[bx]    
cmp ax, a[bx+2]           (比较大小,金州注释)
jpg continue                (>=不交换,金州注释)
xchg ax, a[bx+2]             ( 否则,交换)
mov a[bx], ax               
continue:
add bx ,2
loop loop2
mov cx ,di                (做外循环,loop1,金州注释)
loop loop1
........

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -