請問組合語言十進位制轉換為ascii碼的程式段,急

時間 2021-12-18 21:57:14

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執行原理的較為通俗的比較容易理解的語言。高階語言,是以 人 的思維邏輯來描述電腦執行的...