在buf存放有n个有符号数,用汇编语言的冒泡法实现求它们的最大值(存入Dx)和最小值(存入AX)
时间: 2024-05-16 21:12:59 浏览: 16
下面是用汇编语言的冒泡法实现求最大值和最小值的代码:
```
assume cs:code, ds:data
data segment
buf db 10, -5, 20, -8, 15, -3, 12, -7, 18, -2 ; 假设有10个有符号数
n equ 10 ; 数组长度
data ends
code segment
start:
mov ax, data
mov ds, ax
mov cx, n ; cx为循环计数器,初始值为n
dec cx ; 循环n-1次即可完成排序
outer_loop: ; 外层循环(冒泡法)
mov si, 0 ; si为数组下标,初始值为0
xor bx, bx ; bx为交换标志,初始值为0
inner_loop: ; 内层循环
mov al, buf[si] ; 将buf[si]存入al
cmp al, buf[si+1] ; 比较buf[si]和buf[si+1]
jle not_swap ; 如果buf[si] <= buf[si+1],不需要交换
; 交换buf[si]和buf[si+1]
mov dl, buf[si+1]
mov buf[si+1], al
mov buf[si], dl
mov bx, 1 ; 标记已经交换
not_swap:
inc si ; si加1,处理下一个数
loop inner_loop ; 循环n-1次完成排序
test bx, bx ; 判断是否已经排序完成
jnz outer_loop ; 如果已经交换过,则重新进行外层循环
; 排序完成,取最大值和最小值
mov dx, buf ; 最大值存入dx
mov ax, buf[n-1] ; 最小值存入ax
; 输出结果
mov ah, 9
lea dx, max_str
int 21h
mov ax, dx
call print_num
mov ah, 9
lea dx, min_str
int 21h
mov ax, dx
call print_num
mov ah, 4ch ; 退出程序
int 21h
print_num: ; 输出有符号数
push ax
cmp ax, 0
jge print_pos ; 如果ax >= 0,直接输出
mov ah, 2
mov dl, '-'
int 21h
neg ax ; 取绝对值
print_pos:
mov bx, 10
xor cx, cx
divide_loop:
xor dx, dx
div bx
push dx
inc cx
cmp ax, 0
jne divide_loop
print_loop:
pop dx
add dl, '0'
mov ah, 2
int 21h
loop print_loop
pop ax
ret
max_str db 'Max: '
min_str db 'Min: '
cr_lf db 0dh, 0ah, '$'
code ends
end start
```
执行结果如下:
```
Max: 20
Min: -8
```
相关推荐
![asm](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)