真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

匯編語言如何將16進(jìn)制轉(zhuǎn)10進(jìn)制-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)專注于蘭坪網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供蘭坪營銷型網(wǎng)站建設(shè),蘭坪網(wǎng)站制作、蘭坪網(wǎng)頁設(shè)計(jì)、蘭坪網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造蘭坪網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供蘭坪網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

小編這次要給大家分享的是匯編語言如何將16進(jìn)制轉(zhuǎn)10進(jìn)制,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

 使用8086匯編,輸入一個(gè)16進(jìn)制的數(shù),程序把該16進(jìn)制數(shù)轉(zhuǎn)換為相應(yīng)的10進(jìn)制數(shù)輸出

程序運(yùn)行截圖:

匯編語言如何將16進(jìn)制轉(zhuǎn)10進(jìn)制

要實(shí)現(xiàn)這樣一個(gè)程序,思路可以是這樣的:

  1.由于我們讀入的鍵盤輸入是ASCII碼表示的,且輸入一個(gè)字符便得到一個(gè)ASCII碼,如輸入ab,程序中可以得到61h和62h?,F(xiàn)在的問題是怎么把這些輸入的字符表示成一個(gè)完整的數(shù)。對于這個(gè)問題,我們可以把每次輸入的字符的ASCII碼先轉(zhuǎn)換為對應(yīng)的數(shù),0-9之間的數(shù),根據(jù)ASCII碼表發(fā)現(xiàn)可以用 ASCII碼減30h 得到0-9對應(yīng)的十六進(jìn)制數(shù)值,對于a-b,用ASCII碼減57h 得到a-b對應(yīng)的十六進(jìn)制數(shù)值。

  2.得到這些對應(yīng)的數(shù)值之后,要把它們按輸入順序組合起來,這里可以用移位運(yùn)算來組合,如根據(jù)輸入轉(zhuǎn)換得 1、2兩個(gè)十六進(jìn)制數(shù)值,1的二進(jìn)制表示為0001,2的二進(jìn)制表示為0010,把0001左移4位得到00010000,加上0010,得到0001010,00010010表示的便是12h。

  3.把輸入轉(zhuǎn)換為數(shù)值之后就準(zhǔn)備要輸出了,可采用除10法得到各個(gè)位上的數(shù),如要輸出110,先要把110轉(zhuǎn)為 1、1、0 再把對應(yīng)的數(shù)值加上30h轉(zhuǎn)為ASCII碼后輸出,把110轉(zhuǎn)換為 1、1、0,110除以10商為11,余數(shù)為0,此時(shí)余數(shù)作為個(gè)位上的數(shù),得到個(gè)位為0;再用上一步的商11作為被除數(shù)除以10,得到商為10,余數(shù)為1,此時(shí)余數(shù)作為十位上的數(shù),得到十位為1;重復(fù)上述步驟,商1作為被除數(shù)除以10,商0余1,得到百位為1,此時(shí)商等于0,算法結(jié)束。

DATAS SEGMENT
  bin dw 10 dup(?)  ;存放二進(jìn)制結(jié)果
  buf db 5 dup(?)   ;存放十進(jìn)制數(shù) 各個(gè)數(shù)位上的數(shù)值 如100,存放為 1,0,0
  msg1 db 'please input a hex number',13,10,'$'
  msg2 db 'the dec number:',13,10,'$'
  crlf db 13,10,'$'  ;回車換行
DATAS ENDS

CODES SEGMENT
  ASSUME CS:CODES,DS:DATAS
START:
  MOV AX,DATAS
  MOV DS,AX
  
    mov bx,0    ;初始化bx
    
    LEA dx,msg1    ;輸出提示字符串
    mov ah,9
    int 21h
    
 input:
    mov ah,1    ;輸入一個(gè)字符
    int 21h
    
    sub al,30h    ;把a(bǔ)l中的ascii碼轉(zhuǎn)換成數(shù)值
    jl init
  
    cmp al,10    ;輸入的數(shù)在0-9之間跳轉(zhuǎn)
    jl toBin
    
    sub al,27h    ;再轉(zhuǎn)換為a-f
    cmp al,0ah    ;輸入的字符比a小
    jl init      ;結(jié)束輸入
    cmp al,10h    ;輸入的字符比f大
    jge init    ;結(jié)束輸入
    
 toBin:      ;轉(zhuǎn)換為二進(jìn)制,把輸入組合成意義上的數(shù)值
    mov cl,4    
    shl bx,cl    ;bx左移4位
    mov ah,0    
    add bx,ax    ;把輸入后并從ascii碼轉(zhuǎn)換來的值與bx相加
    mov bin,bx    ;轉(zhuǎn)換成二進(jìn)制數(shù)后存到內(nèi)存bin
    jmp input    ;繼續(xù)輸入
    
 init:        ;初始化,準(zhǔn)備轉(zhuǎn)換
   mov ax,bin    
   mov bx,10    
   mov si,4    ;循環(huán)四次,大到萬位
   
 toDec:      ;轉(zhuǎn)為各個(gè)數(shù)位上的數(shù)值,如100轉(zhuǎn)換為1,0,0 百位為1...
   mov dx,0    
   div bx      ;除10法得到各個(gè)位上的數(shù)值
   mov [buf+si],dl  ;余數(shù)為該位上的值,第一次循環(huán)為個(gè)位,第二次為十位...;存到內(nèi)存中
   dec si      
   cmp ax,0    ;商是否為0,為0算法結(jié)束
   ja toDec
 

   lea dx,crlf      ;顯示提示
   mov ah,9
   int 21h
   lea dx,msg2
   mov ah,9
   int 21h
   
 output:        ;輸出內(nèi)存中存放的各個(gè)數(shù)位上的數(shù)值
   inc si
   mov dl,[buf+si]
   add dl,30h      ;轉(zhuǎn)為ascii
   mov ah,2
   int 21h
   cmp si,4
   jb output
   
  
  mov ah,1
  int 21h
  MOV AH,4CH
  INT 21H
CODES ENDS
  END START

網(wǎng)站欄目:匯編語言如何將16進(jìn)制轉(zhuǎn)10進(jìn)制-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://weahome.cn/article/dchpgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部