我做了以下代码以提示输入一个数字,然后返回一个字符串中的相同数字,另一个字符串中的前一个数字和给定数字相同的数字,它的继任者,但无论我做什么,我都会一无所有地回归。该代码给了我4个不同时间遇到的依赖于通道的构造的警告。难道我做错了什么?或者这是我的DOS模拟器的问题?无法获得从DOS返回的值和3个警告
INCLUDE io.h
Cr EQU 0DH ; carriage return
Lf EQU 0AH ; line feed
TheStack SEGMENT STACK
DW 100H DUP (?)
TheStack ENDS
Data SEGMENT
Number1 DW ?
Number2 DW 1
Prompt1 DB 'Please enter an integer of your choice: ', 0
Prompt2 DB Cr, Lf, 'Enter second number: ', 0
String DB 40 DUP (?)
Label1 DB Cr, Lf, 'Your integer is '
Label2 DB Cr, Lf, ' is the sucessor of '
Label3 DB Cr, Lf, 'the predecessor of '
Label4 DB Cr, Lf, 'is '
Diff DB 6 DUP (?)
DB Cr, Lf
Sum1 DB 6 DUP (?)
DB Cr, Lf, 0
Sum2 Db 6 DUP (?)
DB Cr, Lf, 0
Data ENDS
Code SEGMENT
ASSUME Cs:Code, Ds:Data
Start: Mov Ax, SEG Data ; Load Data Segment Number.
Mov Ds, Ax
Prompt: Output Prompt1 ; Prompt for first number.
Inputs String, 40 ; Read the ASCII characters.
AToI String
Mov Ax, Number1
IToA, Number1, Ax
Output Label1
Output Number1 ; Output label and sum.
AToI Number1
Mov Ax, Number1
Sub Ax, Number2 ; Store second number.
IToA Sum1, Bx
output Sum1, Label2, Number1, stop
Sub Ax, Number2 ; subtract second number.
IToA Diff, Ax
IToA Number1
Mov Bx, Number1 ; Load first number in accumulator.
Add Bx, Number2
IToA Diff, Bx
Output Label3 and Diff and Label4 and stop ; Output label and sum.
Quit: Mov Al, 0 ; Put return code of zero in Al.
Mov Ah, 4CH ; Put DOS function call in Ah.
int 21H ; Call DOS
Code ENDS
END Start
您未能以我们可以回答的问题的形式陈述您的困惑。告诉我们你的代码现在在做什么,包括实际的错误信息,你已经做了什么来解决它,以及你不明白的东西。 “难道我做错了什么?”不是一个好的SO问题。 –
好的,我真的知道我做错了什么。显然,我不能一次打印超过1个变量而没有叠加。因此,我不想用提示1打印出number1,我必须在提示1下面定义数字1.我仍然有问题。我正在尝试存储我正在提示的号码,但现在不会打印出正确的输入。如果我放入数字9,它会说我的整数是2.对于前任和后继者,它会说1.我来回更改变量以及事物如何存储,但仍然没有运气。 –