汇编语言:键盘录入8个16进制数,求出其中最大值并以16进制输出

本文介绍了一个使用汇编语言编写的程序,该程序能够接收键盘输入的8个16进制数,并找出这些数值中的最大值,最后以16进制形式输出。程序中详细展示了循环结构、条件判断以及数据转换等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:

1.   掌握loop指令及循环程序设计方法。

2.   掌握输入/输出代码编写。

3.   学习移位指令的应用。


代码:

assume cs:codesg
codesg segment			;键盘输入8个16进制数(每个数二进制8位,即16进制2位),求出其中最大值并以16进制输出
		mov cx,8h
		mov bh,0		;bh是最大值

s:		mov ah,01h
		mov bl,0
		int 21h			;输入
		cmp al,41h
		jb a			;小于41H的数,即小于'A',为数字,跳转到a
		sub al,7h
a:		sub al,30h		;从ascll码变成数字
		add bl,al		;放进bl

		mov ah,01h
		int 21h			;输入第二次
		cmp al,41h
		jb b			;小于41H的数,即小于'A',为数字,跳转到b
		sub al,7h
b:		sub al,30h		;从ascll码变成数字
		shl bl,1		;左移bl,腾出位置给输入位累加
		shl bl,1
		shl bl,1
		shl bl,1
		add bl,al		;放进bl
		cmp bl,bh		;和bh(最大值)比较
		jbe c			;bl<=bh(最大值)时转移去c
		mov bh,bl		;更新bh(最大值)的值
c:		loop s

		mov bl,bh
		mov bh,0
		
		MOV AH,02H
		MOV DL,0DH
		INT 21H 		;回车
		MOV AH,02H
		MOV DL,0AH
		INT 21H 		;换行

		MOV  CH,4		;输出BX
ROTATE: MOV  CL,4
        ROL  BX,CL		;把bx最高四位循环左移到最低四位
        MOV  AL,BL		;取出位移后的bl
        AND  AL,0FH		;取出al低四位,即上次bx的最高四位,这里是反向输出,先输出高位,再输出低位
        ADD  AL,30H		;加上30H ,开始转变为ascll码,其实这里也可以用or AL,30H,还能更快
        CMP  AL,3AH		;比较AL,和10的ascll码
        JL  PRINTIT		;JL小于转移,用于有符号数的比较,AL<3AH (为数字)则跳转
        ADD  AL,7H		;走到此处说明为字母,则加7变为字母的ascll
PRINTIT:MOV  DL,AL		;将待输出的ascll码放入DL
        MOV  AH,2		;2号功能,字符输出
        INT  21H		;2号功能,字符输出,输出DL的ascll码
        DEC  CH			;ch --
        JNZ  ROTATE		;运算结果标志位 ZF!=0 则转移


		mov ax,4c00h
		int 21h
codesg ends
end 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值