日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编语言-003(LAHF_SAHF 、XCHG、FLAGS、 OFFSET、ALIGN、PTR、LENGTHOF、SIZEOF)

發布時間:2023/12/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言-003(LAHF_SAHF 、XCHG、FLAGS、 OFFSET、ALIGN、PTR、LENGTHOF、SIZEOF) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:LAHF將EFLAGS符號寄存器低8位字節復制到AH,SAHF將AH復制到EFLAGS符號寄存器低8位字節

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data saveflags BYTE ?.code main PROClahfmov saveflags ,ahmov ah,saveflagssahfINVOKE ExitProcess,0 main ENDP END main

2:交換兩個操作數內容

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCoed:DWORD.data val1 WORD 1234h val2 WORD 5678h.code main PROCmov ax,val1xchg ax,val2mov val1,axINVOKE ExitProcess,0 main ENDP END main

3:直接尋址,數組名加[]和偏移量訪問元素

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCoed:DWORD.data arrayB BYTE 10h,20h,30h,40h,50h arrayW WORD 100h,200h,300h,400h,500h arrayD DWORD 1000h,2000h,3000h,4000h,5000h.code main PROCmov al,arrayBmov al,[arrayB+1]mov al,[arrayB+2]mov ax,arrayWmov ax,[arrayW+2]mov eax,arrayDmov eax,[arrayD+4]INVOKE ExitProcess,0 main ENDP END main

4:算術表達式例子 Rval = -Xval + (Yval - Zval)

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data Rval SDWORD ? Xval SDWORD 26 Yval SDWORD 30 Zval SDWORD 40.code main PROCmov eax,Xvalneg eaxmov ebx,Yvalsub ebx,Zvaladd eax,ebxmov Rval,eaxINVOKE ExitProcess,0 main ENDP END main

5:標志位例子展示

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data val1 BYTE 10h.code main PROC;零標志mov cx,1sub cx,1mov ax,0FFFFhinc ax;符號標志位mov cx,0sub cx,1mov ax,7FFFhadd ax,2;進位標志位mov al,0FFhadd al,1;溢出標志位mov al,+127add al,1mov al,-128sub al,1INVOKE ExitProcess,0 main ENDP END main

6:OFFSET偽指令,返回數據標號的距離數據段起始地址的偏移量

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data bVal BYTE ? wVal WORD ? dVal DWORD ? dVal2 DWORD ?myArray WORD 1,2,3,4,5.code main PROCmov esi,OFFSET bValmov esi,OFFSET wValmov esi,OFFSET dValmov esi,OFFSET dVal2;OFFSET訪問數組元素mov esi,OFFSET myArray+4INVOKE ExitProcess,0 main ENDP END main

7:ALIGN偽指令,將一個變量對齊到1,2,4,8,16個字節

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data bVal BYTE ? ;00404000h ALIGN 2 wVal WORD ? ;00404002h bVal2 BYTE ? ;00404004h ALIGN 4 dVal DWORD ? ;00404008h dVal2 DWORD ?;0040400ch.code main PROCINVOKE ExitProcess,0 main ENDP END main

8:重寫一個已經聲明過的操作數的大小類型,就類似指針,指向某地址再取值

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCoed:DWORD.data myDouble DWORD 12345678h wordList WORD 5678h,1234h.code main PROC; mov ax,myDouble ;匯編器不允許這樣mov ax,WORD PTR myDoublemov ax,WORD PTR [myDouble+2] ;1234hmov bl,BYTE PTR myDouble ;78hmov eax,DWORD PTR wordList ;12345678hINVOKE ExitProcess,0 main ENDP END main

9:LENGTHOF偽指令,計算數組元素個數

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCoed:DWORD.data byte1 BYTE 10,20,30 ;LENGTHOF為3 array1 WORD 30 DUP(?),0,0 ;LENGTHOF為30+2 array2 WORD 5 DUP(3 DUP(?)) ;如果嵌套DUP,那LENGTHOF返回的是兩個數值的乘積 LENGTHOF為5*3,類似二維數組 array3 DWORD 1,2,3,4 ;LENGTHOF為4 digitStr BYTE "12345678",0 ;LENGTHOF為9myArray BYTE 10,20,30,40,50 ;LENGTHOF為5,占用多行只針對第一行BYTE 60,70,80,90,100myArray2 BYTE 10,20,30,40,50, ;LENGTHOF為10,第一行用逗號,后面繼續初始化60,70,80,90,100.code main PROCINVOKE ExitProcess,0 main ENDP END main

10:SIZEOF偽指令,計算數組總字節數,LENGTHOF 與 TYPE 的乘積

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCoed:DWORD.data intArray WORD 32 DUP(0).code main PROCmov eax,SIZEOF intArrayINVOKE ExitProcess,0 main ENDP END main

總結

以上是生活随笔為你收集整理的汇编语言-003(LAHF_SAHF 、XCHG、FLAGS、 OFFSET、ALIGN、PTR、LENGTHOF、SIZEOF)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。