1樓:
轉化1個數為r進位制字串。
字串表示,採用除r取餘法,重複的計算n % r的餘數和n/r的商,依次得到r進位制的各個字元,值得注意的是,得到的r進位制的各個字元順序是從低位到高位,這和我們平時書寫的順序是相反的,為了和書寫順序保持一致,在最後階段需要將字串首尾交換。
步驟1: 將緩衝區首地址p和head
步驟2:
c取n除以r的餘數,即c=n % r
將c存入p處
p前進一個位置, 即p=p+1;
n取n除以r的商, 即n=n/r;
步驟3: 如果n大於0,繼續重複執行步驟2步驟4:
將字串倒置,即末字元和第1個字元交換,倒數第2個字元和第2個字元交換,依次類推。
2樓:待譃1生
a1 segment
main proc far
assume cs:a1
start: push ds
sub ax,ax
push ax
mov bx,0110110100110111bmov ch,4
b1: mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl b2
add al,7h
b2: mov dl,al
mov ah,2
int 21h
dec ch
jnz b1
retmain endp
a1 ends
end start
3樓:匿名使用者
能加我一下嗎?我超想學彙編。qq674721534 msn :[email protected]
組合語言將二進位制轉化為十六進位制的功能 ,解釋下列**每一句在二進位制轉化為十六進位制中起到什麼作用
4樓:匿名使用者
main proc far
assume cs:a1
start: push ds
sub ax,ax
push ax
mov bx,0110 1101 0011 0111b ;6d37h
mov ch,4
b1: mov cl,4
rol bx,cl ;將bx中的數迴圈左移4位,也就是把bx最高4位,放到bx的最低4位上去。
mov al,bl ;將低8位放入al
and al,0fh ;取低4位
add al,30h ;加上30h 從這裡開始將4位二進位制數轉成16進位制ascii碼,
;0--的ascii碼是30h…9是39h,a是41h,b是42h…f是46h
cmp al,3ah ;加結果是不是少於3a
jl b2 ;是的話,表示是0-9之中數
add al,7h ;否則還要加上7,變成對應的a或b、c、d、e、f
b2: mov dl,al ;al是轉換好的一位16進位制數的ascii碼
mov ah,2
int 21h ;顯示到螢幕
dec ch
jnz b1 ;因為bx中其有4位16進位制數,所以要處理4次。這裡是判斷處理完4次沒,如果沒有,就繼續處理下一個數
retmain endp
a1 ends
end start
這個程式的功能是將bx中的0110 1101 0011 0111b(6d37h)以16進位制顯示在螢幕上。
「顯示在螢幕」的準確說法是:輸出到系統標準控制檯上。
不知道我說清楚沒,希望能幫到你
5樓:匿名使用者
main proc far
承擔cs:a1
start:push ds
sub ax,ax
的push ax
mov bx,0110 1101 0011 0111乙; 6d37h mov ch,4
rol bx,cl b1:mov cl,向左旋轉bx四,這是bx,bx最高4,最低的4最多。
mov al,bl低8到al
al,0fh;低4
add al,30h 30h耦合的4位二進位制數,從這裡到十六進位制的ascii** br /> - ascii碼30h ... 9 39h,a是41h,b是42h ... f 46h
cmp al,3ah增加的結果是不低於3a
jl b2;,那麼,這是0-9之間
add al,7h,否則加7,進相應的a或b,c,d,e,f
b2:mov dl,al,al mov ah是一個十六進位制數轉換好的ascii**
int 21h;顯示在螢幕上
dec ch
的jnz b1 bx是4個十六進位制數,所以要處理的四倍。這裡是判斷完沒有,如果沒有,繼續處理下一個數字
retmain endp
a1 end結束的開始
這個程式的功能是bx 0110 1101 0011 0111 b(6d37h)以十六進位制顯示在螢幕上。準確的說法是:
「顯示在螢幕上」輸出到系統的標準控制檯上。
不認識我,顯然沒有,我希望你能幫助
6樓:做而論道
在計算機裡面,二進位制和16進位制,是等效的,不需要轉換。
也不可能轉換。
可以發生變化的,只有顯示。
用組合語言程式設計實現二進位制數和十六進位制數之間的轉換。(要求鍵入被轉換數,轉換的結果要求從螢幕上顯示。
7樓:匿名使用者
dseg segment
hextb db '0123456789abcdef'
msg0 db 0dh,0ah, '**********menu***********',0dh,0ah
db '* 1.input binary number:*',0dh,0ah
db '* 2.input hex number: *',0dh,0ah
db '* 3.exit *',0dh,0ah
db '*************************',0dh,0ah,'$'
msg1 db 0dh,0ah,'input binary number:$'
msg2 db 0dh,0ah,'input hex number:$'
res1 db 0dh,0ah,'convert2hex number:$'
res2 db 0dh,0ah,'convert2bin number:$'
crlf db 0dh,0ah,'$'
dseg ends
cseg segment
assume cs:cseg, ds:dseg
start:
mov ax, dseg
mov ds, ax
m0:mov ah,9
lea dx, msg0
int 21h
mov ah, 7
int 21h
cmp al,'1'
jb m0
cmp al,'3'
ja m0
mov ah,0eh
int 10h
and al,0fh
cmp al,1
jz m1
cmp al,2
jz m2
cmp al,3
jz m3
m1:mov ah,9
lea dx, msg1
int 21h
call readbin
mov ah,9
lea dx, res1
int 21h
call printhex
jmp m0
m2:mov ah,9
lea dx, msg2
int 21h
call readhex
mov ah,9
lea dx, res2
int 21h
call printbin
jmp m0
m3:mov ah,4ch
int 21h
readbin proc near
mov bx, 0
mov cx, 16
b0:mov ah,7
int 21h
cmp al,0dh
jz b1
cmp al,'0'
jb b0
cmp al,'1'
ja b0
mov ah,0eh
int 10h
and ax,01h
shl bx,1
add bx,ax
dec cx
jnz b0
b1:ret
readbin endp
printbin proc near
mov cx,16
mov ah,0eh
p1:rol bx,1
mov al,bl
and al,1
xor al,30h
int 10h
loop p1
retprintbin endp
readhex proc near
mov bx,0
mov cx,404h
h0:mov ah,7
int 21h
cmp al,0dh
jz h6
cmp al,'0'
jb h0
cmp al,'9'
ja h1
mov ah,0eh
int 10h
and al,0fh
jmp h5
h1:cmp al,'a'
jb h0
cmp al,'f'
ja h2
mov ah,0eh
int 10h
sub al,37h
jmp h5
h2:cmp al,'a'
jb h0
cmp al,'f'
ja h0
mov ah,0eh
int 10h
sub al,57h
h5:shl bx,cl
add bl,al
dec ch
jnz h0
h6:ret
readhex endp
printhex proc near
mov cx,404h
mov ah,0eh
mov dx, bx
lea bx, hextb
p0:rol dx, cl
mov al, dl
and al,0fh
xlat
int 10h
dec ch
jnz p0
retprinthex endp
cseg ends
end start
如何使用組合語言將bx暫存器內的二進位制數用十六進位制數的形式在螢幕上顯示出來?
8樓:匿名使用者
disp proc near ;顯示16進位制數(字母大寫)子程式,入口:bx暫存器存有二進位制待顯示數
mov dl,bh
mov cl,4
shr dl,cl
cmp dl,10
jc hex1
add dl,30h
hex1: add dl,37h
mov ah,02h
int 21h
mov dl,bh
and dl,0fh
cmp dl,10
jc hex2
add dl,30h
hex2: add dl,37h
mov ah,02h
int 21h
mov dl,bl
mov cl,4
shr dl,cl
cmp dl,10
jc hex3
add dl,30h
hex3: add dl,37h
mov ah,02h
int 21h
mov dl,bl
and dl,0fh
cmp dl,10
jc hex4
add dl,30h
hex4: add dl,37h
mov ah,02h
int 21h
mov dl,48h
mov ah,02h
int 21h
retdisp endp
用組合語言將記憶體中的16位的有符號二進位制數轉換為十進位制ASC
1 在許多彙編書上均有例程,可參考一下。如 80 86 奔騰機組合語言程式設計 電子工業出版社 2 可以利用c的sprintf進行各種字串與資料的轉換 將其形成庫 然後在彙編下呼叫。這是一個比較簡單,功能也是最強的一個通用方法。下面是從ydebug v1.96 使用手冊裡取出來的32位轉換 很短,可...
組合語言程式輸入一位十進位制轉換為二進位制
做而論道 判斷某個位,用 test 指令更方便。data segment llll db 0000 data ends code segment assume cs code,ds datastart mov ax,data mov ds,ax mov ah,08h int 21h 如果輸入0 9s...
c語言將十進位制轉化為二進位制,c語言程式設計,如何將十進位制轉化為2進位制
十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元陣列,int ...