三个无符号数分别在AL BL C其中有两个相同,L中编写程序找出来
时间: 2023-05-24 07:03:03 浏览: 44
这道题目中,我们需要找出三个无符号数中相同的两个数。首先,我们可以将其中一个数与其他两个数进行比较,找到相同的两个数。
具体程序如下:
```
mov al, [address of first number] ;将第一个数放入AL寄存器
mov bl, [address of second number] ;将第二个数放入BL寄存器
mov cl, [address of third number] ;将第三个数放入CL寄存器
cmp al, bl ;比较AL和BL寄存器中的数
jz result ;如果相同,跳转到结果输出
cmp al, cl ;如果不相同,比较AL和CL寄存器中的数
jz result ;如果相同,跳转到结果输出
cmp bl, cl ;如果不相同,比较BL和CL寄存器中的数
jz result ;如果相同,跳转到结果输出
jmp end ;如果都不相同,跳转到程序结束
result:
;输出相同的两个数
end:
;程序结束
```
在这个程序中,我们首先将三个无符号数放入AL、BL、CL三个寄存器中,然后将AL和BL中的数进行比较,如果相同就跳转到结果输出部分;如果不相同,则比较AL和CL中的数,如果相同就跳转到结果输出部分;如果仍然不相同,则比较BL和CL中的数,如果相同就跳转到结果输出部分;如果都不相同,直接跳转到程序结束部分。
这样的程序可以简单快速地找出三个无符号数中相同的两个数。
相关问题
有三个无符号数分别在al bl cl中其中有两个相同编写1程序找出不相同的数并送入DL中
以下是可以解决这个问题的x86汇编代码:
MOV DL, 0 ; 初始化DL为0
CMP AL, BL ; 比较AL和BL
JNE EXIT ; 如果AL和BL不相等,跳转到退出标签
CMP AL, CL ; 如果前面相等,再比较AL和CL
JNE DIFF ; 如果AL和CL不相等,跳转到不同标签
JMP EXIT ; 如果前面都相等,说明三个数相等,直接退出
DIFF: MOV DL, AL ; 如果不同,将非相同的数(AL)送入DL
JMP EXIT
EXIT: ; 代码执行到这里,DL中存储的就是不相同的数
解释:
首先将DL初始化为0,表示还没有找到不同的数。
然后比较AL和BL,如果相等,说明不是两个相同数和一个不同数的情况,需要继续比较。
接着比较AL和CL,如果相等,说明三个数相等,直接退出。
如果AL和BL不相等而AL和CL相等,说明BL是不同的数,将其送入DL。
最后,无论是找到了不同的数还是没有找到,都跳转到退出标签,DL中存储的就是不同的数。
微机原理 编写一个程序, 显示AL寄存器中的两位十六进制数
以下是一个简单的汇编程序,可以显示AL寄存器中的两位十六进制数:
```
ORG 100h ; 声明程序的起始地址
MOV AH, 0 ; 将AH寄存器清零
MOV AL, 0Fh ; 将AL寄存器设置为16进制数0F
; 将AL寄存器中的16进制数转换为字符并输出
MOV BL, AL ; 将AL寄存器的值复制到BL寄存器
SHR BL, 4 ; 右移4位,将高4位移到低4位
ADD BL, 30h ; 将数字转换为对应的ASCII码值
MOV DL, BL ; 将结果存储到DL寄存器
MOV AH, 2 ; 将AH寄存器设置为2,表示输出字符
INT 21h ; 调用21h中断,输出DL寄存器中的字符
MOV BL, AL ; 将AL寄存器的值复制到BL寄存器
AND BL, 0Fh ; 取低4位
ADD BL, 30h ; 将数字转换为对应的ASCII码值
MOV DL, BL ; 将结果存储到DL寄存器
MOV AH, 2 ; 将AH寄存器设置为2,表示输出字符
INT 21h ; 调用21h中断,输出DL寄存器中的字符
MOV AH, 4Ch ; 将AH寄存器设置为4Ch,表示程序结束
INT 21h ; 调用21h中断,结束程序
```
这个程序将AL寄存器中的16进制数0F转换为字符并输出。你可以将AL寄存器设置为任何其他16进制数,然后运行程序来查看结果。