回 帖 发 新 帖 刷新版面

主题:老师作业,我已经做完了,但是找不到错误,大家帮忙!!谢谢

输入X,Y,Z
如果X=30,输出“X EQUAL TO 30”否则“X NOT EQUAL TO 60”
如果X>=-20,输出“X GRATER OR EQUAL TO -20”否则“X LESS THAN -20”
找出最大数和最小数
OUTPUT LIKE 
ENTER X:30
ENTER Y:50
ENTER Z:-30

X EQUAL TO 30
X GREATER OR EQUAL TO -20
MIN NUMBER :-30
MAX NUMBER :50


下面是我写的程序:
.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h                    ; header file for input/output

cr      EQU     0dh             ; carriage return character
Lf      EQU     0ah             ; line feed

.STACK  4096                    ; reserve 4096-byte stack

.DATA                           ; reserve storage for data
number1 DWORD   ?  
number2 DWORD   ?
number3 DWORD    ?
min    DWORD    ?
max    DWORD    ?
prompt1 BYTE    "Enter x:  ", 0
prompt2 BYTE    "Enter y:  ", 0
prompt3 BYTE    "Enter z:  ", 0
string  BYTE    200 DUP (?)
label1  BYTE    cr, Lf, "X equal to 30 ",0
label2  BYTE    cr, Lf, "X not equal to 60 ",0
label3    BYTE    cr, Lf, "X greater or equal to -20",0
label4  BYTE    cr, Lf, "Xless than -20",0
label5  BYTE    cr, Lf, "Minimum Number: ",0
label6    BYTE    cr, Lf,    "Maximum Number:",0
res1    BYTE    50 DUP (?)
    BYTE    cr, Lf, 0

res2    BYTE    50 DUP (?)
        BYTE    cr, Lf, 0

.CODE                           ; start of main program code
_start:
        output  prompt1         ; prompt for first number
        input   string, 200      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax          ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 200
        atod    string
        mov     number2, eax
        
        output  prompt3         ; repeat for third number
        input   string, 200    
    atod    string
    mov     number3, eax

        mov     eax,number1    ;number1=eax
    cmp    eax,30
    JE    Isequal        ;x=30?        
    output    label2        ;x!=30    output label2
    jmp    Next

Isequal: output  label1        ;x=30   output label1
Next:    mov    ebx,-20        ;ebx=-20
    cmp    eax,ebx        
    JL    Less        ;x<-20?
    output  label3        ;x>=-20    output label3
    jmp    After 

Less:   output    label4        ;x<-20    output label4



After:    mov    eax,number1    ;number1=eax
    cmp    eax,number2    ;number1>y?
    JG    great        
    jmp    next1        ;n1<n2
great:    cmp    eax,number3    ;number1>z?
    JG    Biger        ;n1<n3
    jmp    next4
    
Biger:    dtoa    res1,eax    ; convert to ASCII characters
    output    label6        ; output label and sum
next4:    mov    ecx,number3
    dtoa    res1,ecx
    output    label6
next1:    cmp    eax,number3    ;number1<number3?
    JL    next2
    jmp    next3
next2:    dtoa    res2,eax
    output    label5
next3:    mov    ebx,number3
    dtoa    res2,ebx
    output    label5

        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code

回复列表 (共1个回复)

沙发

HELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册