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章 複...