iT邦幫忙

0

組合語言CY問題

組合語言

mov esi, 01354000h
sub esi, -1

為什麼上面程式執行完 CY會設置為1? 明明沒進位也沒借位。
https://ithelp.ithome.com.tw/upload/images/20190503/20117357ICGDlDhIh9.png
https://ithelp.ithome.com.tw/upload/images/20190503/201173577l6Vgjk8vI.png

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2019-05-03 12:01:34 檢舉
add esi, 1呢?
wrxue iT邦新手 4 級 ‧ 2019-05-03 13:40:56 檢舉
add esi, 1的話CY不會設置成1
請問大大知道這問題解答嗎Q_Q
fillano iT邦超人 1 級 ‧ 2019-05-03 13:43:08 檢舉
https://anee.me/signed-and-unsigned-additions-in-x86-8ad300007efa
sub esi, -1
相當於
sub esi, ffffffh
(我的猜測)
wrxue iT邦新手 4 級 ‧ 2019-05-03 18:27:51 檢舉
sub esi, ffffffh 好像也不會到進位(?
因為應該會把esi - (fffffffh)變成esi + (-fffffffh)(2補數回1)?
wrxue iT邦新手 4 級 ‧ 2019-05-03 18:28:22 檢舉
不太懂那個網頁要表達甚麼?@@
小數 - 大數
會產生借位,也會使 CY=1
補數這部分我就不太清楚
wrxue iT邦新手 4 級 ‧ 2019-05-03 21:35:47 檢舉
可是我的圖片看起來不太像esi-fffffff (01354000-fffffff) ,它是直接+1。
fillano iT邦超人 1 級 ‧ 2019-05-03 23:46:19 檢舉
你把兩個值都放進暫存器,單步執行看看暫存器裡面放的是什麼,然後sub兩個暫存器。
wrxue iT邦新手 4 級 ‧ 2019-05-04 00:14:53 檢舉
mov eax, 1354000h
mov ebx, -1
sub eax, ebx

以上執行後
EAX = 01354001 , EBX = FFFFFFFF
所以照那網頁如果直接相減的話就會需要借位,所以CY=1在這邊是借位的意思?
好像理解了,謝謝兩位大大!

尚未有邦友回答

立即登入回答