8086汇编语言显示一串字符串中ASCII码最大的一个字符

微机原理大作业的一部分,比较简单,题目描述如下:
在这里插入图片描述
拿之前写过的代码修改,5分钟搞定,甚至连调试都没调,一次运行就功能正常了。好家伙!

代码如下:

DATAS SEGMENT
    SINPUT DB 'Please input a string: $' 
    SOUTPUT DB 'The biggest char is: $' 
    BUF1 DB 20H
    DB  0
    DB 20H DUP(0)
DATAS ENDS

STACKS SEGMENT PARA STACK
   DW 30H DUP(0)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    MOV AH,09H;显示字符串
    LEA DX,SINPUT;取段内偏移地址
    INT 21H;调用系统dos中断
    
    MOV AH,0AH;键盘输入到缓冲区
    LEA DX,BUF1;取段内偏移地址
    INT 21H;调用系统dos中断
    
    ;换行
	MOV DL,0DH;CR
 	MOV AH,2;显示一个字符
 	INT 21H;调用系统dos中断
 	MOV DL,0AH;LF
 	MOV AH,2;显示一个字符
 	INT 21H;调用系统dos中断
 	
 	MOV AH,09H;显示字符串
    LEA DX,SOUTPUT;取段内偏移地址
    INT 21H;调用系统dos中断
    
    ;初始化
	MOV DX,0
	MOV BX,0;这里面低位BL存最大ASCII码
	MOV SI,2
	MOV AX,0
REREAD:
    MOV AL,BUF1[SI];寄存器相对寻址,从缓冲区取一个字符
    CMP AL,0DH;是否是CR
    JE  FINAL;等于就跳转退出,JNE相反
    CMP AL,BL;比当前的最大值还大
    JG BIGGEST;大于则跳转
    JMP LOP;否则下一个
BIGGEST:
   MOV BL,AL;将最大的存入BL
LOP:
	INC SI;自加1
	JMP REREAD;
FINAL:
	MOV DL,BL;传送字符(ASCII码最大的)
 	MOV AH,2;显示一个字符
 	INT 21H;调用系统dos中断
    ;退出代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

运行结果:
在这里插入图片描述
就这?
就这就够我水一篇博客了。

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值