汇编语言比较三个数的大小
时间: 2023-11-09 10:01:57 浏览: 98
汇编语言比较三个数的大小的代码如下:
```
MOV AX, num1
MOV BX, num2
CMP AX, BX
JGE compare1
MOV AX, num2
MOV BX, num1
compare1:
MOV CX, num3
CMP AX, CX
JGE compare2
MOV DX, CX
JMP end
compare2:
MOV DX, AX
CMP BX, CX
JGE end
MOV DX, CX
end:
```
其中,num1、num2、num3 分别为三个数的值,DX 中存储的即为最大值。
相关问题
汇编语言写比大小
下面是用汇编语言写的比大小程序示例,可以比较两个数的大小并输出结果:
```
section .data
num1 db 10
num2 db 20
msg1 db 'Num1 is greater',0
msg2 db 'Num2 is greater',0
msg3 db 'Both are equal',0
section .text
global _start
_start:
mov al, [num1] ; load num1 into al register
mov bl, [num2] ; load num2 into bl register
cmp al, bl ; compare the values in al and bl
je equal ; jump to equal if they are equal
jle num2greater ; jump to num2greater if num2 is greater or equal
jmp num1greater ; jump to num1greater if num1 is greater
num1greater:
mov eax, 4 ; system call for printing
mov ebx, 1 ; file descriptor for stdout
mov ecx, msg1 ; message to be printed
mov edx, 14 ; message length
int 0x80 ; call kernel
jmp exit ; jump to exit
num2greater:
mov eax, 4 ; system call for printing
mov ebx, 1 ; file descriptor for stdout
mov ecx, msg2 ; message to be printed
mov edx, 14 ; message length
int 0x80 ; call kernel
jmp exit ; jump to exit
equal:
mov eax, 4 ; system call for printing
mov ebx, 1 ; file descriptor for stdout
mov ecx, msg3 ; message to be printed
mov edx, 13 ; message length
int 0x80 ; call kernel
exit:
mov eax, 1 ; system call for exit
xor ebx, ebx ; exit status
int 0x80 ; call kernel
```
这个程序首先定义了两个数字num1和num2,以及三个字符串消息msg1,msg2和msg3,分别表示num1大于num2、num2大于num1和两个数字相等。
在主程序中,首先将num1和num2的值加载到寄存器al和bl中,然后使用cmp指令比较它们的大小。如果它们相等,就跳转到equal标签,否则比较结果决定跳到num1greater或num2greater标签。
在num1greater标签中,程序将msg1字符串输出到控制台,然后跳转到exit标签,退出程序。在num2greater标签中,程序将msg2字符串输出到控制台,然后跳转到exit标签,退出程序。在equal标签中,程序将msg3字符串输出到控制台,然后跳转到exit标签,退出程序。
最后,exit标签使用系统调用exit退出程序。
汇编语言在masm5环境下 三个数利用分支结构从大到小排序应输出
以下是利用MASM汇编语言实现三个数从大到小排序并输出的代码:
```
.model small
.stack 100h
.data
num1 db 5 ; 第一个数
num2 db 2 ; 第二个数
num3 db 7 ; 第三个数
.code
main proc
mov ax, @data
mov ds, ax
; 判断 num1 和 num2 的大小关系
mov al, num1
cmp al, num2
jg num1_bigger
xchg al, num2
num1_bigger:
mov num1, al
; 判断 num2 和 num3 的大小关系
mov al, num2
cmp al, num3
jg num2_bigger
xchg al, num3
num2_bigger:
mov num2, al
; 判断 num1 和 num2 的大小关系
mov al, num1
cmp al, num2
jg num1_bigger2
xchg al, num2
num1_bigger2:
mov num1, al
; 输出排序后的结果
mov ah, 09h ; BIOS中断,用于输出字符串
lea dx, num1
int 21h
mov dl, ','
int 21h
lea dx, num2
int 21h
mov dl, ','
int 21h
lea dx, num3
int 21h
mov ah, 4ch ; 程序结束
int 21h
main endp
end main
```
在上面的代码中,使用了分支结构来判断三个数之间的大小关系,然后使用xchg指令实现了数值的交换。最后使用BIOS中断来输出排序后的结果。