主题:老师作业,我已经做完了,但是找不到错误,大家帮忙!!谢谢
输入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
如果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