2012-04-09 45 views
-1

我只是想知道代碼將一個十進制整數(由用戶輸入)轉換爲2的內存中的恭維表示。2的補碼彙編代碼

例如:用戶輸入1234作爲小數。我想在AX中存儲04D2(2的補碼)(因爲我只允許使用字長字符串)

我正在使用80x86體系結構。

+1

恩,04d2不是二的補碼。它只是十六進制數字1234。你是否試圖將一個字符串解析爲一個整數? – 2012-04-09 22:15:55

+0

以及我的最終目標是從用戶獲得一個16位數字轉換爲2的讚美,然後找到其八進制表示。 I – cj1098 2012-04-09 22:19:00

+1

您是否需要處理負整數,或者只是正整數? – 2012-04-09 22:22:40

回答

1

將一串數字轉換爲一個整數是非常簡單的:一次只讀一位數字,將其轉換爲十進制數字(通常從其中減去'0')。你把你現有的價值,乘以10,並添加當前數字的價值。

處理負數增加了一點難度。大多數人通過保持一個標誌來表示如果以「 - 」開頭的數字是負數的話。然後,當他們轉換了數字時,如果該標誌被設置,它們就會否定。

那確實,但是,有一個問題:將最負數需要一些額外的工作,因爲(2的補數)的最負數有較大的幅度比你可以表示爲正數(不使用更多的位)。例如,16位2的補碼數字範圍從-32768到+32767,但您需要(至少)17位或無符號的16位數字來表示+32768。

編輯:將十進制數字轉換爲整數後,您需要將整數轉換爲十六進制數字以十六進制顯示。該轉換更容易一些。您重複除以16,餘數成爲下一個十六進制數字。您通常會使用像「abcdef」這樣的表格,並使用該表格索引到表格中以獲取顯示的數字。您重複分配並使用餘數,直到您的股息爲零。一個竅門是,這會產生反向順序的數字(從最小到最重要),所以您通常會將它們放入緩衝區,從緩衝區的末端開始,朝着開始的方向前進。

+0

我想要問的是用戶輸入數字時,如何查看它的十六進制值。 – cj1098 2012-04-09 22:34:05

+0

@ cj1098:你必須從十進制數轉換成一個整數。然後你必須從整數轉換爲十六進制數字。 – 2012-04-09 22:36:06

+0

謝謝!@我現在明白了 – cj1098 2012-04-09 22:39:09