微机原理大作业的一部分,比较简单,题目描述如下:
拿之前写过的代码修改,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
运行结果:
就这?
就这就够我水一篇博客了。