學習筆記-匯編-兩個16位數字相加獲得32位數字


使用的是MASM編譯

在XP環境下 command內 debug 調試的

啥也不說 上代碼!!

assume cs:code,ds:data
data segment
    dw 0fa12h,0fdffh
data ends 

code segment
start:  
        mov ax,data
        mov ds,ax       ;設置數據段
        mov ax,0h       ;清零
        mov bx,0h       ;清零
        mov al,ds:[0]   ;fa12低位
        mov bl,ds:[2]   ;fdff低位
        add ax,bx       ;兩個8位數字相加 ah 高位存儲進位的數
        mov ds:[0],al   ;將低位結果存到ds[0]
        mov al,ah       ;將進位數存至ax低位
        mov ah,0h       ;高位清零
        xor bx,bx       ;bx清零
        mov bl,ds:[1]  
        add ax,bx       ;數字1高位與進位數相加
        mov bl,ds:[3]   
        add ax,bx       ;數字2高位與進位數相加
        mov ds:[1],ax   ;高位相加后的數據放至ds[1] 
                        ;高位相加可能是8位 也可能是16位
        int 21h 
code ends
end start            

主要思路就是在16位寄存器里面

計算兩個八位數字的和

將進位的數保存至高位

可以依次擴展至 32位 64位 等等

閑來無事 最近看了一點匯編的知識

課本上都是一些 mov add之類的操作

但是都沒有任何實際的用途

第一次發帖

來博客園也有好幾年時間了

一直都處於潛水階段

看各位大俠再次高談闊論

看的小弟也是蠢蠢欲動

終於忍不住寫下了一點微薄見解

忘在此結實各路英雄豪傑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM