注册 登录
编程论坛 汇编论坛

小程序,帮忙修改下

miss迈赖 发布于 2011-05-30 16:36, 370 次点击
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个数 输出较大的那个、
3 回复
#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 编辑 ]
#3
zaixuexi2011-05-30 21:43
回复 2楼 ansic
挺好的
#4
ansic2011-05-30 23:31
以下是引用zaixuexi在2011-5-30 21:43:04的发言:

挺好的

1