我做了以下代碼以提示輸入一個數字,然後返回一個字符串中的相同數字,另一個字符串中的前一個數字和給定數字相同的數字,它的繼任者,但無論我做什麼,我都會一無所有地迴歸。該代碼給了我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.我來回更改變量以及事物如何存儲,但仍然沒有運氣。 –