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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

汇编语言(九)之十六进制数值转二进制

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言(九)之十六进制数值转二进制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

輸入四位十六進制的數值,將十六進制數值轉二進制輸出

程序運行:

?

代碼:

datas segmentmaxLength db 5hexLength db 0hex db 5 dup(?)bin db 100h dup(?)inputPrompt db 'input 4 bit hexadecimal:$'outputBinary db 0dh,0ah,'output binary:$'outputInputError db 0dh,0ah,'input error!$'datas endsstacks segment stackdb 100h dup(?)stacks endscodes segmentassume cs:codes,ds:datas,ss:stacks main proc far start:push dsmov ax,0hpush axmov ax,datas ;初始化dsmov ds,axlea dx,inputPrompt ;輸入提示mov ah,9int 21hlea dx,maxLength ;輸入十六進制字符mov ah,10int 21hmov cl,hexLength ;若字符串長度不為4,則輸入錯誤cmp cl,4jne inputErrormov ch,0 ;設置ch,使得cx為字符串的長度lea si,hex lea di,bins:mov al,[si] cmp al,'9' ;判斷字符是否大于'9'ja english ;大于9則跳轉去判斷是否為其他十六進制字符cmp al,'0' ;判斷字符是否大于'0' jb inputError ;若小于'0',則輸出jmp tobinary ;否則,則轉換為二進制english:or al,32 ;將字符變成小寫字母,不是小寫字母的運算結果不變cmp al,'a' ;判斷字符是否大于'a'jb inputError ;若小于'a',則輸入錯誤cmp al,'f' ;判斷字符是否大于'f'ja inputError ;若大于'f',則輸入錯誤 sub al,7 ;先減7,變成數字的值+30htobinary:sub al,30h ;減去30h,剩下數值call binary ;轉換二進制,使用al,diinc si ;數組下標加一loop slea dx,outputBinary ;輸出二進制提示mov ah,9int 21hmov byte ptr [di],'$' ;設置二進制字符串的結束字符lea dx,bin ;輸出二進制字符串mov ah,9int 21hjmp exitinputError: ;輸入錯誤提示lea dx,outputInputErrormov ah,9int 21h exit:retmain endpbinary proc nearpush cx ;保存cxmov cl,4 ;將al左移4位,使al的高半字節為原來al的低半字節shl al,clmov cx,4sbin:shl al,1 ;左移一位jc one ;進位為1,跳轉到onemov byte ptr [di],'0' ;否則,二進制數組置'0'jmp restart ;跳轉到restartone: ;置'1'mov byte ptr [di],'1'restart:add di,1loop sbinpop cx ;恢復cxretbinary endp codes endsend main

?

總結

以上是生活随笔為你收集整理的汇编语言(九)之十六进制数值转二进制的全部內容,希望文章能夠幫你解決所遇到的問題。

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