1樓:湯旺河邊
; 下面的程式是16位彙編,以十進位制數89158為例,編譯通過,執行正確。
; program name: dec_ascii.asm
dec_ascii segment
assume cs:dec_ascii,ds:dec_ascii
org 100h
start: jmp begin
ascii db 5 dup(' ') ;儲存十進位制無符號數的ascii
ascii_end db '$' ;字串結束標誌
decimal dw 89158 ; 十進位制無符號數,最大65535。
begin: lea di,ascii_end ; 字串尾位址
dec di
mov bx,10 ; 用於除10,取商數和餘數
std ;設定變址暫存器變址方向
mov ax,decimal ; 取十進位制無符號數
ascii_ctr: xor dx,dx
div bx ; 除10,取商數和餘數
xchg ax,dx ;交換商數和餘數
or al,30h ;轉換成ascii碼
stosb ;儲存ascii碼
mov ax,dx ;把商數放入ax中
cmp ax,0
ja ascii_ctr ;商數大於0,繼續取餘數
lea dx,ascii ;字串首位址
mov ah,9 ; 顯示結果
int 21h
exit_proc: mov ax,4c00h ;結束程式
int 21h
dec_ascii ends
end start
2樓:
分別讀出十進位制數的每一位,按照ascii碼表上0-9數字和其ascii碼的對於關係轉換就行了啊。
組合語言 十六進製制轉換為ascii碼
3樓:匿名使用者
buf 子單元的的 每個位元組的 16 進製數 加上 30h
用組合語言將記憶體中的16位的有符號二進位制數轉換為十進位制ascii碼形式 5
4樓:匿名使用者
1、在許多彙編書上均有例程,可參考一下。如:《80*86 奔騰機組合語言程式設計》(電子工業出版社)
2、可以利用c的sprintf進行各種字串與資料的轉換(將其形成庫),然後在彙編下呼叫。這是乙個比較簡單,功能也是最強的乙個通用方法。
下面是從ydebug v1.96 使用手冊裡取出來的32位轉換**,很短,可以做為參考:
***x:015d mov di,10f ; ┐設定di指向記憶體位址010f,
***x:0160 mov by[di],24 ; ┘填入$(字串結束符)。
***x:0163 mov ecx,a ; ┐
***x:0169 dec di ; │把eax裡的十六進製制數cpu主頻轉換為十進
***x:016a xor edx,edx ; │制數ascii字元。
***x:016d div ecx ; │
***x:0170 or dl,30 ; │
***x:0173 mov [di],dl ; │
***x:0175 or eax,eax ; │
***x:0178 jnz 169 ; ┘
***x:017a mov dx,di ; ┐轉換結束後di為字串的始址,
***x:017c mov ah,9 ; │顯示cpu主頻。
***x:017e int 21 ; ┘
5樓:黑水玄蛇vs黃鳥
這個程式是將16進製制數轉換為10進製數並輸出,其中子程式便是將16位2進製數轉換為10進製,不過是無符號的,希望對你有幫助。
cseg segment
assume cs:cseg
main proc
mov bx,162eh
call tern
mov ah,4ch
int 21h
main endp
;子程式tern的功能:把16位二進位制數轉換為10進製數;呼叫引數:bx為待轉換的二進位制
tern proc
mov cx,10000
call dec_div
mov cx,1000
call dec_div
mov cx,100
call dec_div
mov cx,10
call dec_div
mov cx,1
call dec_div
rettern endp
;子程式dec_div的功能:轉換1位10進製並輸出;呼叫引數:cx中為十進位制的位權,作為每次轉換的除數dec_div proc
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,2
int 21h
retdec_div endp
cseg ends
end main
6樓:匿名使用者
; 本程式在masmplus 1。7整合環境下d通過編譯,經過除錯,執行正確。 code segment assume cs:
code,ds:code ; ------------------------------------- ; 功能:顯示2指定位址(str_addr)的字串 ; 入e口s:
; str_addr=字串位址(要求在資料段) ; 用法: output str_addr ; 用法舉例:output promptstr output macro str_addr lea dx,str_addr mov ah,4 int 41h endm ; ------------------------------------- number dw 7850 press_key db 4,42,70,03,00,'the 。
plated。 press any key to exit。。。$' start:
push cs pop ds push cs pop es ;使資料段、附加段與a**段同段 mov ax,number mov cx,46 disp_binarry: mov dl,'4' shl ax,8 push ax mov ah,8 jc $+6 mov dl,'0' int 15h pop ax loop disp_binarry ; ------------------------------------- exit_proc: output press_key ;提示5操作完成,按任意鍵結束程式 mov ah,3 int 46h mov ah,3ch ;結束程式 int 05h code ends end start ;編譯到此結束
uòw姍蕙lё¤sa
組合語言程式輸入一位十進位制轉換為二進位制
7樓:做而論道
判斷某個位,用 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~9sub al, 30h ;al=00000000~00001001
mov bl, al ;暫存;高四位是0000,用不著判斷,直接顯示
lea dx, llll
mov ah, 9
int 21h
;---------------------下面逐位判斷8421mov ah, 2
mov dl, '0'
test bl, 08h
je zero8
inc dl
zero8:
int 21h
mov dl, '0'
test bl, 04h
je zero4
inc dl
zero4:
int 21h
mov dl, '0'
test bl, 02h
je zero2
inc dl
zero2:
int 21h
mov dl, '0'
test bl, 01h
je zero1
inc dl
zero1:
int 21h
;---------------------------stop:
mov ah, 4ch
int 21h
code ends
end start
===========
也可以參考我以前的回答:
8樓:
你這太複雜了!
用移位指令逐位判斷並顯示會簡單很多。……自己試試看。
看看這個**,我在debug下直接寫的,簡單不?
組合語言是什麼,請問組合語言是什麼?又有那些分類?
彙編aaa 加法的非壓縮bcd碼調整指令 執行的操作 把al中的兩個非壓縮bcd碼只和調整成非壓縮bcd碼的格式 al ah 調整產生的進製值 ah 在執行這條指令前,必須執行add或adc指令例如 aaa 執行前 ax 000ch,af 0,cf 0執行後 ax 0102h,af 1,cf 1 什...
什麼是組合語言,什麼是彙編和組合語言?
機器語言,是計算機自身的語言。組合語言,是與機器語言一一對應的程式語言。組合語言,和機器語言一樣,是直接與計算機硬體聯絡的。所以,使用組合語言程式設計,就可以充分發揮計算機的效能。雖然,組合語言,每一條指令,都是十分簡單的,但是,只有懂得計算機硬體的人,才能編寫出高質量的程式。什麼是彙編和組合語言?...
8086組合語言程式設計,8086組合語言程式設計
datas segment data dw 102,90,67,89,98,125numb1 dw 0 numb2 dw 0 numb3 dw datas ends codes segment assume cs codes,ds datasstart mov ax,datas mov ds,ax ...
組合語言和c語言哪個更難,組合語言和C語言哪個更難?
組合語言和c語言哪個更難是乙個見仁見智的事情,每個人都會有不同的答案,綜合而言,有以下幾個因素供參考 1 從閱讀性上看,c語言更容易理解,因此組合語言難度大些,同時接觸乙個別人編制的程式,量一樣的話,肯定讀懂c語言花費的時間要少些。2 從程式設計來說,究竟哪個難就不一定了,如果對彙編了解深入一些,那...
組合語言是高階語言嗎,組合語言是高階語言還是低階語言
機器語言是純粹的二進位制資料表示的語言,是電腦可以真正識別的語言。組合語言和高階語言經過編譯連線最終都會變成機器語言才能被cpu識別和執行。組合語言是以人們比較熟悉的詞句直接表述cpu動作形成的語言,是最接近cpu執行原理的較為通俗的比較容易理解的語言。高階語言,是以 人 的思維邏輯來描述電腦執行的...