![]() |
#2
ansic2011-05-30 18:01
![]() ; ;This Program Compiled Sucess by Masm 6.15 ; assume cs:code,ds:data,ss:stack data segment buff db 6,0,6 dup (0) ;输入缓冲区,输入不大于6位数字 num1 dw 0 num2 dw 0 msg db 'Max=$' data ends stack segment stack ;可有可无 db 64 dup (0) stack ends code segment start: mov ax,data ;定义数据段 mov ds,ax call input ;调用输入子程序 mov num1,ax ;将数值存放至num1 call crlf ;换行 call input ;调用输入子程序 mov num2,ax ;将第二个数放在num2 call crlf ; mov dx,offset msg ;显示提示信息 mov ah,9 int 21h mov ax,num1 ;开始比较,将大数存放至dx cmp ax,num2 jae a mov dx,num2 jmp b a: mov dx,ax b: call disp ;调用显示子程序,将大数显示出来 mov ah,4ch int 21h ;crlf crlf proc uses ax dx mov ah,2 mov dl,13 int 21h mov dl,10 int 21h ret crlf endp ; ;input input proc mov dx,offset buff mov ah,10 int 21h mov cl,buff+1 mov ch,0 mov si,offset buff+2 s1: mov ax,0 s2: mov dx,10 mul dx and byte ptr [si],0fh add al,[si] adc ah,0 inc si loop s2 ret input endp ; ;display disp proc mov ax,dx xor dx,dx mov bx,10 mov cx,0 d1: cmp ax,10 jb ok div bx add dl,30h push dx xor dx,dx inc cx jmp d1 ok: add al,30h push ax inc cx d2: pop dx mov ah,2 int 21h loop d2 ret disp endp ; code ends end start 只有本站会员才能查看附件,请 登录 本程序没有对输入做检测。只接受数字的输入。 [ 本帖最后由 ansic 于 2011-5-30 18:05 编辑 ] |
DATA SEGMENT
BUF DB 32
DB ?
DB 32 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
MOV BX,OFFSET BUF
MOV AL,[BX]
INC BX
CMP AL,[BX]
JAE NEXT
MOV AL,[BX]
NEXT: MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
要求是输入2个数 输出较大的那个、