匯程式設計序 多數絕對值和

2021-08-01 00:11:30 字數 1223 閱讀 9989

【任務】在buf1和buf2兩個資料區中,各定義有10個帶符號字資料,試編制一完整的源程式,求它們對應項的絕對值之和,並將和數存入以sum為首址的資料區中。

data segment

buf1 dw -56, 24, 54, -1, 89, -8, 87, -32, 23, 45

buf2 dw 45, -23, 124, 345, -265, -214, 0, 48, -10, -12

sum dw 10 dup (0)

data ends

【參考解答】

assume ds:data, ss:stack, cs:code

data segment

buf1 dw -56, 24, 54, -1, 89, -8, 87, -32, 23, 45

buf2 dw 45, -23, 124, 345, -265, -214, 0, 48, -10, -12

sum dw 10 dup (0)

data ends

stack segment para stack

dw 20h dup (0)

stack ends

code segment

start:

mov ax, data

mov ds, ax

mov cx, 10

lea si, buf1

lea di, buf2

lea bx, sum

next: mov ax, [si] ;取第乙個數

mov dx, [di] ;取第二個數

test ax, 8000h ;8000h,最高位為1,為負

je tdx ;結果為0,說明ax中是正數,不需要取反

neg ax

tdx: test dx, 8000h

je adds ;結果為0,說明dx中是正數,不需要取反

neg dx

adds: add ax, dx ;原數的兩個絕對值相加

mov [bx], ax ;bx為存放結果的單元位址

add si, 2

add di, 2

add bx, 2

loop next

mov ah, 4ch

int 21h

code ends

end start

組合語言 計算絕對值

開啟doxbos 更改masm檔案為123 任意 在資料夾中建立檔案123.asm 任意 在doxbos程式中 輸入mount c d 123 輸入c 開啟123.asm編寫程式 第6 7步可以省略,省略辦法見這篇文章,設定之後就不必每次都輸入 編寫乙個程式,計算存放在ax中的有符號數的絕對值,並將...

匯程式設計序 退出

作為第乙個匯程式設計序,本程式除了退出以外,並沒有執行其他的功能。目的 退出並向linux核心返回乙個狀態碼的簡單程式 輸入 無 輸出 返回乙個狀態碼.在執行程式後可通過輸入echo 來讀取狀態碼 變數 eax儲存系統呼叫號 ebx儲存返回狀態 section data section text g...

微機匯程式設計序

又是自學的一學期,呵呵。學到最後也就知道零星半點指令吧,複雜的程式可能還是不怎麼會寫,熟練當然也不敵c了,但是彙編之於嵌入式,往上走肯定少不了遇到,學好還是必要的!此次僅作入門吧。今日所學,明日之用。1 統計正負零的個數 datas segment array db 1,2,1,0,2,0,2,4,...