當前位置:編程學習大全網 - 編程軟體 - 求解編程 微機原理及應用~

求解編程 微機原理及應用~

;先假定16個數都為16位,即兩個字,並且都為壓縮的BCD碼,也就是說,每個數字最大為9999

;如果是非壓縮的bcd碼,進程類似,自行修改

dseg segment

num1 dw ..........................; //16個壓縮BCD碼數字

sum dw ?

sum1 dw 0 ;初始化為0,

dseg ends

cseg segment

main proc far

assume cs:cseg, ds:dseg

start:

push ds

xor ax, ax

push ax

mov ax, dseg

mov ds, ax

;----------------------------------

mov cx, 15 ;//執行15次相加

mov si, 0

mov si, bx

mov ax, [si];//第壹項

mov sum, ax ;ax中數據放在sum, sum+1兩個byte中

next:

add si, 2

mov al, byte ptr sum

add al, [si]

daa ;壓縮BCD調整

mov byte ptr sum, al; 結果放入sum中

mov al, byte ptr sum+1; //高8位

adc al, [si+1] ;高位相加

daa

mov byte ptr sum+1, al

jnc loop_next ;如果兩個數相加,沒有更加進位,則進行下壹個元素相加

mov al, byte ptr sum1

adc al, 0 ;如果有進位,則處理

daa

mov byte ptr sum1, al

jnc loop_next

mov al, byte ptr sum1+1

adc al,0

daa

mov byte ptr sum1+1, al

loop_next:

loop next

ret

main endp

cseg ends

end start

  • 上一篇:C語言,輸入5個字符串,按由小到大的順序輸出。非常急,求指導!
  • 下一篇:匯川PLC掉電保持區在哪裏設
  • copyright 2024編程學習大全網