回覆列表
  • 1 # 使用者8209154827005

      MOV AL,37H

      MOV BL,35H

      ADD AL,BL ; 執行以上3步後,AL = 6CH

    DAA的功能:將AL的內容調整為兩位組合型的二進位制數。DAA的用法: 如果AL的低4位大於9或AF=1,則AL的內容加06H,並將AF置1;然後如果AL的高4位大於9或CF=1,則AL的內容加60H,且將CF置1。如果兩個都不滿足,則將AF,CF清零。

      首先AL = 6CH = 0110 1100B因為AL的低四位1100B大於9,所以AL = AL+06H = 72H,且AF = 1;

    這個DAA指令怎麼使16進位制的加法最終結果卻與10進位制加法相同,即:37D+35D==72D。 這裡不明白樓主想表達什麼?不好意思了

    另外,有個說法:組合語言編寫時,如果後面不加字母表示編譯器預設它是十進位制,所以這個D加與不加沒影響,都是十進位制 是的,但是如果程式編譯執行後,你編寫的十進位制在記憶體中將會被自動轉換成十六進位制哦

    但是我發現在E指令之中並非如此,如果什麼都不加,系統實際是按16進位制記錄的。

      首先,樓主的觀察力很強,贊一個. 因為DEBUG XXX.EXE後,程式就載入了記憶體中,而資料在記憶體中都是以十六進位制數表示的哦; 所以,如果你編寫的程式有十進位制數的話,程式載入記憶體後,會自動轉換成十六進位制數哦

    PS:若有不明白的地方,可以追問

  • 中秋節和大豐收的關聯?
  • 迷茫的時候該如何尋找自己,有哪些好的建議嗎?