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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

汇编语言-013(DAS 、DAA与DAS、QWORD类型用SBB借位减法、编写指令将AX符号扩展到EAX,不能使用CWD、用SHR和条件判断指令将AL循环右移一位、SHLD、压缩十进制转换)

發布時間:2023/12/1 编程问答 40 豆豆

1:DAS : SUB或SBB在AL中生成二進制結果,DAS(減法后的十進制調整)轉壓縮十進制格式

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main PROC;計算85-48mov bl,48hmov al,85hsub al,bl ;AL=3Dhdas ;AL = 37h(調整后的結果)INVOKE ExitProcess,0 main ENDP END main

2:DAA_DAS : DAA與DAS將進位標志位設1的情況

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main PROCmov al,56hadd al,92h ;AL=E8hdaa ;AL =48 ,CF = 1 當壓縮十進制加法的和數大于99,進位為1mov al,56hsub al,92h ;AL = C4hdas ;AL = 64h ,CF=1 ;當從小的壓縮十進制數減去大的壓縮十進制整數,進位為1,也就是表示是負數INVOKE ExitProcess,0 main ENDP END main

3:QWORD類型用SBB借位減法進行計算

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data val1 QWORD 20403004362047A1h val2 QWORD 055210304A2630B2h result QWORD 0.code main PROCmov ecx,8mov esi,0mov edi,0clc top:mov al,BYTE PTR val1[esi]sbb al,BYTE PTR val2[esi]mov BYTE PTR result[edi],alinc esiinc ediloop topINVOKE ExitProcess,0 main ENDP END main

4:編寫指令將AX符號擴展到EAX,不能使用CWD

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main PROCmov ax,0123hmov bx,axsar ax,15shl eax,16mov ax,bxINVOKE ExitProcess,0 main ENDP END main

5:不用循環移位指令,用SHR和條件判斷指令將AL循環右移一位

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main PROCmov al,11hshr al,1jnc quitor al,80h quit:INVOKE ExitProcess,0 main ENDP END main

6:編寫一條SHLD指令,把AX寄存器的最高位移入DX的最低位,DX左移一位

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main PROCmov ax,8111hmov dx,1110hshld dx,ax,1INVOKE ExitProcess,0 main ENDP END main

7:編寫指令,把字節數組右移一位

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data byteArray BYTE 81h,20h,33h.code main PROCmov ecx,(LENGTHOF byteArray) - 1mov esi,OFFSET byteArray L1:mov ax,WORD PTR[esi]shr ax,1mov BYTE PTR[esi],alinc esiloop L1shr BYTE PTR[esi],1INVOKE ExitProcess,0 main ENDP END main

8: 編寫指令,把字數組左移一位

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data wordArray WORD 810Dh,0C064h,93ABh.code main PROCmov ecx,(LENGTHOF wordArray )-1mov esi,(OFFSET wordArray )+(2 * TYPE WORD) L1:mov ax,[esi - TYPE WORD]shld WORD PTR[esi],ax,1sub esi,TYPE WORDloop L1shl WORD PTR[esi],1INVOKE ExitProcess,0 main ENDP END main

9:編寫過程,把8位無符號二進制數值顯示為十進制式,用AL接收二進制數值,其取值范圍為十進制0到99

include Irvine32.inc.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main PROCmov al,65call showDecimal8INVOKE ExitProcess,0 main ENDPshowDecimal8 PROCaam or ax,3030hmov bx,axshr ax,8call WriteCharmov ax,bxcall WriteCharret showDecimal8 ENDP END main

10:壓縮十進制轉換,將4字節的壓縮十進制整數轉為ASCII十進制數字串,向過程傳遞壓縮數字和存放ASCII數字的緩沖地址

.386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data val1 DWORD 12345678h result BYTE 8 DUP(0).code main PROCmov eax,val1mov edi,OFFSET resultcall PackedToAscINVOKE ExitProcess,0 main ENDPPackedToAsc PROCmov ecx,8 L1:rol eax,4mov bl,aland bl,0Fhor bl,30hmov BYTE PTR[edi],blinc ediloop L1ret PackedToAsc ENDP END main

總結

以上是生活随笔為你收集整理的汇编语言-013(DAS 、DAA与DAS、QWORD类型用SBB借位减法、编写指令将AX符号扩展到EAX,不能使用CWD、用SHR和条件判断指令将AL循环右移一位、SHLD、压缩十进制转换)的全部內容,希望文章能夠幫你解決所遇到的問題。

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