0

我做了一个显示最大的代码,但后来我的老师要求我们再做一个输入 3 个数字并显示最小值的代码。

这是代码:

org 100h

    jmp start

    msg1 db 10,13,"Enter first number: $"
    msg2 db 10,13,"Enter second number: $"
    msg3 db 10,13,"Enter third Number: $"

    num1 db ?
    num2 db ?
    num3 db ?

start:

    lea dx, msg1
    mov ah, 9
    int 21h
    mov ah, 1
    int 21h
    mov num1, al 
    lea dx, msg2
    mov ah, 9
    int 21h
    mov ah, 1 
    int 21h
    mov num2, al
    lea dx, msg3
    mov ah, 9
    int 21h
    mov ah, 1
    int 21h
    mov num3, al

    mov bl, num1
    cmp bl, num2
    jng number2 

    cmp bl, num3
    jng number3

    mov ah, 2
    mov dl, num1
    int 21h
    jmp escape 

number2:

    mov bl, num2
    cmp bl, num3
    jng number3

    mov ah, 2
    mov dl, num2
    jmp escape

number3:

    mov ah, 2
    mov dl, num3
    int 21h

escape:
    ret

样本输出:

第 1 号 我输入 3

第二不,我输入2

第三不,我输入1

最大的是 3,但输出将是 13,因为我不知道如何在我的代码上放置空间:D ...

请帮忙!!!XD 这也是我第一次发布这个……非常抱歉我的语法错误。

4

1 回答 1

1
mov ah, 2
mov dl, num2
jmp escape

在这一部分中,您的程序忘记实际调用 DOS 时使用int 21h.

我不知道如何在我的代码上放置空间

只需在需要在同一行的输出之间留出一些空间的任何地方使用以下命令:

mov ah, 2
mov dl, " "
int 21h

或使用以下命令将项目放在不同的行上:

mov ah, 2
mov dl, 10
int 21h
mov dl, 13
int 21h

更好的解决方案是在输出数字之前显示合适的消息:

msg4 db 10,13,"Smallest value: $"
...
lea dx, msg4
mov ah, 9
int 21h

我的老师让我们再做一个,输入3个数字并显示最小值。

只需通过(jump on not less) 指令更改所有这些jng(jump on not greater)指令。jnl


这是您的代码的稍微好一点的版本,并且使用jnl

 mov bl, num1
 cmp bl, num2
 jnl number2 
 cmp bl, num3
 jnl number3
 mov dl, num1
 jmp Print
number2:
 mov bl, num2
 cmp bl, num3
 jnl number3
 mov dl, num2
 jmp Print
number3:
 mov dl, num3
Print:
 mov ah, 2    
 int 21h
 ret

祝你周一好运!

于 2016-06-17T16:55:44.830 回答