組合語言 計算絕對值

2021-10-13 02:57:55 字數 1283 閱讀 3568

開啟doxbos

更改masm檔案為123(任意),在資料夾中建立檔案123.asm(任意)。

在doxbos程式中 輸入mount c d:\123

輸入c:

開啟123.asm編寫程式

第6、7步可以省略,省略辦法見這篇文章,設定之後就不必每次都輸入

編寫乙個程式,計算存放在ax中的有符號數的絕對值,並將結果存入res單元中

data segment

x dw -40

res dw ?

data ends

stack segment

db 50 dup(?)

stack ends

code segment

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

start:

mov ax,data

mov dx,ax

mov ax,x

cmp ax,0 ;比較指令

jge done ;x>0轉移

neg ax ;求負數的絕對值

執行123.exe

執行成功

反彙編(為了輸入方便,將123.exe改為1.exe,這點大家不用更改,維持你檔名即可)

debug 1.exe
然後用u命令

-u
得到反彙編結果

執行結果,檢視暫存器(t命令或者g命令)

如果用t命令一步一步執行

可以輸入

debug 1.exe

-r-t

...(直到得出結果)

如果用g命令全部執行

debug 1.exe

-g 076a:0018 ;(這裡是你想要執行到的程式位址)

編寫不易,感謝支援。

絕對值排序 C語言

description 輸入n n 100 個整數,按照絕對值從大到小排序後輸出。題目保證對於每乙個測試例項,所有的數的絕對值都不相等。input 輸入資料有多組,每組佔一行,每行的第乙個數字為n,接著是n個整數,n 0表示輸入資料的結束,不做處理。output 對於每個測試例項,輸出排序後的結果,...

絕對值排序(C語言)

problem description 輸入n n 100 個整數,按照絕對值從大到小排序後輸出。題目保證對於每乙個測試例項,所有的數的絕對值都不相等。input 輸入資料有多組,每組佔一行,每行的第乙個數字為n,接著是n個整數,n 0表示輸入資料的結束,不做處理。output 對於每個測試例項,輸...

絕對值相關

abs 是如何來求絕對值的並且看看它的效率如何,所以反彙編出來看了下 sar 0x1f,edx xor edx,eax sub edx,eax 對應c語言 求int a的絕對值 b a 31 a a b a a b 起初還沒想透為什麼這樣就能得到絕對值,再細想,對右移理解有誤 微機原理忘光了,汗顏 ...