汇编实现地址对应值相加
生活随笔
收集整理的這篇文章主要介紹了
汇编实现地址对应值相加
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ? 先來看一段匯編代碼:
? ? ? ? ??
? ? ? ? ?上面一段程序的作用是計算ffff:0~ffff:3單元中數據的和,最終結果保存在dx寄存器中。ds是一個段寄存器,通常用來存放要訪問數據的短地址,ds的值后面[bx]會用到。8086CPU不支持將數據直接送入段寄存器的操作,所以需要ax寄存器作為中轉,就要對ax先賦值。
? ? ? ? [bx]為ds*16+bx對應地址的值,'[]'會自動讀取ds段寄存器的值。因為ffff:0~ffff:3中的數據是8位的,而寄存器是16位的,所以執行mov操作時先對其地位的4位進行操作,即mov al,[bx](al表示ax low),然后對其高位進程操作。inc指令是對目標操作數+1,使得累加后指向下一個地址的值。?下面看一下單步調試的結果:
? ? ? ?ffff:0~ffff:3對應的值如下
? ? ? ?
? ? ? ?分別為 EA D4 04,16進制的1個位對應二進制的4個位,所以它們都是8位的。
? ? ??
? ? ??
? ? ? ?上面是程序的部分執行過程,最后dx=01c2,是EA D4 04之和。cx=0表明循環結束。
?
?
參考資料:<<匯編語言>>王爽
總結
以上是生活随笔為你收集整理的汇编实现地址对应值相加的全部內容,希望文章能夠幫你解決所遇到的問題。