彙編 實現C語言的 與 運算

2022-04-29 02:51:09 字數 2942 閱讀 1731

;

c程式轉彙編(或運算鏈結)

datas segment

a dw

5b dw

6cc dw

7d dw

8m dw

2n dw

2string db

6dup(?)

datas ends

codes segment

assume

cs:codes, ds:

datas

start:

movax,datas

mov ds,ax ;

把需要比較的兩個數字放入兩個暫存器中

movax,a

movbx,b

cmpax,bx

jb rm ;

當amov m,0

;當a>b時為假所以m賦值為0

;上述內容給等價於m=a<>>b

movax,cc

movbx,d

cmpax,cc

jarn

mov n,0

;上述內容給等價於n=c>d

jmpexit

rm:mov m,1

jmpexit

rn:mov n,1

jmpexit

exit:

movsi,offset string

movax,m

andal,0fh

addal,30h

mov[si],al

;把m轉化為ascii碼並存入string中

xorcx,cx

mov cl,3

;上述兩句設定迴圈次數

lp:inc

si

mov byte ptr [si],20h ;

20h代表空格

loop lp

;利用迴圈新增3個空格 代替\t

incsi

movax,n

andal,0fh

addal,30h

mov[si],al

;把n轉化為ascii碼並存入string中

mov byte ptr [si+1],'$'

;為字串string加上結束符

;c程式轉彙編(與運算鏈結)

2datas segment

3 a dw 5

4 b dw 6

5 cc dw 7

6 d dw 8

7 m dw 2

8 n dw 2

9 string db 6

dup(?)

10datas ends

11codes segment

12 assume cs:codes, ds:

datas

13start:

14mov

ax,datas

15mov ds,ax ;

把需要比較的兩個數字放入兩個暫存器中

1617

movax,a

18mov

bx,b

19cmp

ax,bx

20jbe rm ;

當a<=b時跳轉到rm

21mov m,1

;當a>b時為真所以m賦值為122;

上述內容給等價於m=a>b

23mov

ax,cc

24mov

bx,d

25cmp

ax,cc

26jbe

rn27

mov n,128;

上述內容給等價於n=c>d

29jmp

exit

3031

rm:32

mov m,0

33jmp

exit

34rn:

35mov n,0

36jmp

exit

37exit:

38mov

si,offset string

39mov

ax,m

40and

al,0fh

41add

al,30h

42mov

[si],al43;

把m轉化為ascii碼並存入string中

44xor

cx,cx

45mov cl,346;

上述兩句設定迴圈次數

47lp:

48inc

si49

mov byte ptr [si],20h ;

20h代表空格

50loop lp51;

利用迴圈新增3個空格 代替\t

52inc

si53

movax,n

54and

al,0fh

55add

al,30h

56mov

[si],al57;

把n轉化為ascii碼並存入string中

58mov byte ptr [si+1],'$'

59;為字串string加上結束符

60lea

dx,string

61mov

ah,09h

62int

21h63

movah,4ch

64int

21h65

codes ends

66 end start

彙編 C語言的IF轉彙編

include int main else return 0 對應彙編 如下 00ae1a10 push ebp 棧提公升 00ae1a11 mov ebp,esp 00ae1a13 sub esp,0d8h 00ae1a19 push ebx 儲存現場 00ae1a1a push esi 00ae...

彙編 C語言的for轉彙編

for 變數初始化操作 判斷是否執行迴圈 變數增減操作 提公升堆疊 00f83c00 push ebp 00f83c01 mov ebp,esp 00f83c03 sub esp,0cch 儲存現場 00f83c09 push ebx 00f83c0a push esi 00f83c0b push ...

一 彙編指令與C語言

1 debug模式下,vc 6.0下斷點執行,按ctrl f11可檢視彙編 另外可以用cl c fas yourcppfile.cpp命令列在同目錄生成yourcppfile.asm彙編檔案。2 push將32位運算元壓入堆疊,esp指向棧頂,故esp減去4 位元組 32位,在64位機器上則是8 記...