Intel組合語言程式設計(第四版) 勘誤

2022-05-01 02:57:10 字數 1092 閱讀 2749

intel組合語言程式設計(第四版)

[美] kip r.irvine  著

溫玉傑  張家生  羅雲彬  等譯

第六章,6.3.3.3有符號比較

原文:

1

movax,80h

2cmp

ax,7fh3ja

isabove

4jg isgreater

原文解釋:

在上面的例子裡,ja指令並不跳轉,因為無符號數7fh比無符號數80h要小;相反jg指令則執行跳轉,因為+127大與-128。

本來也沒太注意看著解釋,不過這例子是我想弄明白的。

因為我想知道處理器怎麼處理各個標誌位,是把運算元當成無符號來處理,還是當成有符號來處理,還是根據sf標誌來進行相應的處理呢

先看了下解釋,似乎跟**描述得不一樣喔,然後再細看一下**就覺得不對,ax是32位暫存器,進行處理的只是16位數,怎麼操作cf、sf都不會設定。

帶著懷疑,自己編譯了一下,用od載入除錯。

發現,果然是原書打錯了。

自己動手修改了一下

1

moval,80h

2cmp

al,7fh3ja

isabove

4jg isgreater

按照預料中的結果執行。

現在來解決當初的疑惑

od載入,執行到cmp al,7fh時的標誌位狀態如下:

繼續執行,到ja isabove時,標誌位狀態如下:

可以發現,cf、sf、of標誌位置位,zf標誌位復位

很顯然,cpu根本不知道7fh,80h是無符號數還是有符號數,只是根據結果機械地設定各個標誌位,而不管你運算元是否有符號。

cf是無符號數操作時才有意義的,of是有符號數操作時才有意義的,所以,ja,jg等指令可以根據sf來獲取相關的運算元。

於是乎,這種機制能友好地為大家服務.

王爽《組合語言》第四版 實驗7

title 王爽 組合語言 第四版 實驗7 tags id 258 categories 這個實驗確實是比較繁瑣,而且我先是手寫的 有很多考慮錯誤的地方,最後話了2個多小時才解決掉。迄今為止最麻煩的程式 assume cs code,es table,ss stack data segment db...

《C 高階程式設計》第四版

c 經典名著!也是wrox紅皮書中最暢銷的品種之一,從第一版開始就名滿天下 其第3版被中華讀書報 csdn 程式設計師 等機構評選為2005年最權威的十大it圖書之一 第2名 在中國版協 中國出版科學研究所 出版參考 雜誌組織的 2005年度輸出版 引進版優秀圖書 評選活動中獲得 2005年度引進版...

c primer大綱(第四版)

第1章 快速入門 第一部分 基本語言 第2章 變數和基本型別 第3章 標準庫型別 第4章 陣列和指標 第5章 表示式 第6章 語句 第7章 函式 第8章 標準io庫 第二部分 容器和演算法 第9章 順序容器 第10章 關聯容器 第11章 泛型演算法 第三部分 類和資料抽象 第12章 類 第13章 複...