如何在emu8086中显示代码中的最小值?

时间:2016-06-17 09:10:43

标签: emu8086

我制作了一个显示最大的代码但是我的老师要求我们制作另一个输入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

     

第3个不,我输入1

     

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

请帮助!!! XD这也是我第一次发布这个...很抱歉我的语法错误。

1 个答案:

答案 0 :(得分:1)

mov ah, 2
mov dl, num2
jmp escape

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

  

我不知道如何在我的代码上添加空间

只需在同一行的输出之间需要一些空间的地方使用以下内容:

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个数字并显示最小值。

只需通过jng(不少于跳转)指令更改所有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
星期一祝你好运!