用汇编语言编写程序:从键盘输入5个数(0~9),找其中最大值并显示!急求!!谢谢!!!

如题所述

  ;程序硬性规定了输入要1 2 8 6 1 这样输入, 即每输入1数字就要空一格
  assume cs:code, ds:data
  data segment
  STR db 0AH,0DH,"Please input five number(0~9): $"
  BUF db 20
  db ?
  db 20 dup (?)
  MAX db ?
  CRLF db 0AH,0DH,'$'
  data ends

  code segment
start:
  mov ax,data
  mov ds,ax
  ;打印提示字符
  lea dx, STR
  mov ah,9
  int 21h
  ;接收用户输入字符
  lea dx, BUF
  mov ah,10
  int 21h
  ;程序主体
  mov cl,4
  lea si,BUF+2
  mov al, [si]
  mov MAX,al
next:add si,2
  mov al,[si]
  cmp MAX,al
  jg done;检查MAX是否大于al,如果是跳转到done,否则交换MAX,al的值(即执行xchg MAX,al)
  xchg MAX,al
done:loop next
  ;输出空行
  lea dx,CRLF
  mov ah,9
  int 21h
  ;输出最大值
  mov ah,2
  mov dl,MAX
  int 21h
  ;结束
  mov ax,4c00h
  int 21h
  code ends
  end start

masm link 运行通过
PS:若有不明白的地方,可以追问
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-04
.......
mov cx,5 ;CX用于计数
xor bx,bx ;BL放最大数,先预置为0
loop1:
mov ah,1 ;输入一个数
int 21h
cmp bl,al ;是不是比上一个数大
jnc loop2
mov bl,al ;如果新输入的数大,就换成该数
loop2:
loop loop1 ;转去处理下一个数
mov dl,bl ;输出最大数
mov ah,2
int 21h
..............本回答被网友采纳
第2个回答  2012-12-09
输出格式,如回车换行自己写的。
代码段
ASSUME CS:CODE

MOV AH,START:1
INT 21H
MOV BH,AL
INT 21H < / MOV BL,AL
INT 21H
MOV CL,AL,BH,BL,CL输入三个字符。

CMP BH,BL
JA C1
CMP BL,CL
JA P2
JMP P3

C1:CMP BH ,CL
JA P1
JMP P3

P1:MOV AH,2
MOV DL,BH
JMP ED
P2:MOV AH ,2
MOV DL,BL
有JMP ED
P3:MOV AH,2
MOV DL,CL
ED:INT 21H
MOV AH,4CH
INT 21H
的代码最终
END START
第3个回答  2012-12-10
- >