從鍵盤輸入2位無符號的16進位制數,00h ffh,然後在顯示器上同時以2進位制和16進位制顯示出來用組合語言寫

2021-03-25 05:34:02 字數 5519 閱讀 1800

1樓:熊滔

編語言寫

;類似的題目有許多種做法,這次換了種方法...

;用ma** 5.0 編譯通過。(ctrl+c結束);執行結果示範如下:

;aa ====>>> 10101010

;bb ====>>> 10111011

;cc ====>>> 11001100

;dd ====>>> 11011101

;ee ====>>> 11101110

;ff ====>>> 11111111

;af ====>>> 10101111

;^cdata segment

crlf db 0dh,0ah,'$' ;輸出回車換行f1 db 0 ;定義輸入的數字位數標誌,為0表示輸入的是個位temp db 0 ;輸入的數

mess1 db ' ====>>> $'

s1 db '0123456789abcdefabcdef'

ll equ $-s1

data ends

code segment

assume cs:code, ds:datamain proc far

start:

push ds

xor ax,ax

push ax

mov ax,data

mov ds,ax

push ds

pop es

;-------------------------ini: ;初始化

mov al,0

mov f1,al

mov temp,al

n1: ;輸入字元起始位

mov ah,8

int 21h

cmp al,0dh ;是回車符則輸出結果jnz goon

mov bl,temp

jmp output

goon:

call c_1 ;檢測輸入字元是否合法

jnz n1 ;不合法,直接重新輸入

push ax ;顯示輸入的字元

mov dl,al

mov ah,2

int 21h

pop ax

cmp al,'a' ;以下將輸入的字元轉換成數字jb be1a

sub al,'a'-10

jmp nn1

be1a:

cmp al,'a'

jb be1

sub al,'a'-10

jmp nn1

be1:

sub al,'0'

nn1:

mov bl,f1 ;檢測輸入的是1位還是2位cmp bl,0

jnz w2

mov temp,al ;是1位

inc f1 ;置1位標誌

jmp n1 ;跳轉輸入下一個數位

w2: ;輸入的是第2位數

mov bl,temp ;將上一位輸入的數乘以10h(左移4位),再加上這次輸入的數

mov cl,4

shl bl,cl

add bl,al

output: ;將數字輸出提示資訊,'====>>>'

mov ah,9

mov dx,offset mess1

int 21h

mov cl,8 ;設定迴圈次數

disp_n:

rol bl,1 ;左移一位

jc dd1

mov dl,'0' ;無進位顯示0

jmp disp

dd1:

mov dl,'1' ;有進位顯示1

disp:

mov ah,2

int 21h

loop disp_n

mov ah,9

mov dx,offset crlf ;輸出一個回車換行int 21h

jmp ini ;跳轉輸入下一個數

main endp

;***************===

c_1 proc near ;檢測輸入的字元是否合法子程式mov di,offset s1

mov cx,ll

repnz scasb

ret;返回:nz=輸入的值不在表內 zr=輸入的值在表內c_1 endp

;**********=

code ends

end start

2樓:匿名使用者

你是哪位~~~謝謝你哈,今天我們也在做這個實驗~~~~悠嘻

8位2進位制數用16進製表示後 00h~ffh 那個h是什麼意思??

3樓:匿名使用者

b:二進位制

d:十進位制(預設不寫)

o:八進位制

h:十六進位制

你以後見到了要自己區分

這是基本知識

4樓:匿名使用者

是一種習慣性的字尾寫法,用以說明這個數字的進位制。帶b說明是2進位制,h表示16進位制數。

微控制器內部資料儲存地址中的00h 和0fh,ffh代表什麼意思。。。f 和0是什麼

5樓:海天盛筵

表示十六進位制數的意思。

00h,0fh,ffh是一個十六進位制數,它等於0,0fh=15,ffh=255,用於內部資料儲存的記憶體。

00h~ffh相當於小數0~255

例如:二進位制十六進位制十進位制

00000000b000h

0000000101h1b

0000001002bh2

00001001b09h9

00001010b010

000010110bh11b

000011000ch12b

00001101b0dh13

00001110b014

00001111b0fh15

擴充套件資料:

注意事項:

8051系列微控制器有兩個定時器:t0和t1,分別稱為定時器和t1定時器,這兩個定時器是16位定時器/計數器,8052系列微控制器新增第三定時器/計數器t2,具有定時或事件計數功能,常用於時間控制,延時,外部時間計數和檢測等。

8051微控制器的兩個定時器t0和t1分別由兩個特殊的功能暫存器組成,t0由專用暫存器th0和tl0組成,t1由th1和tl1組成。

當作為定時器使用時,定時器對8051微控制器晶片振盪器輸出的脈衝數進行12分頻後計數,即每臺機器週期使定時器t0/t1的暫存器值自動累加1,直到溢位,之後迴圈計數從0開始;所以,定時器的解析度是時脈頻率的1/12。

當用作計數器時,外部脈衝訊號按引腳t0(p3.4)或t1(p3.5)計數,當輸入的外部脈衝訊號從1跳到0時,計數器的值自動增加1,計數器的最大頻率通常是時脈頻率的1/24。

由此可以看出,無論是定時器還是計數器的工作方式,定時器t0和t1都不佔用cpu時間,除非定時器/計數器t0和t1溢位,否則它可能導致cpu中斷,然後執行中斷處理程式,因此定時器/計數器是一種微控制器高效、靈活的工作元件。

6樓:匿名使用者

微控制器內部資料儲存地址, 資料 等等,都是 以 二進位制 或者 4 位二進位制 組成 1 位 十六進位制數,

00h ~ ffh 相當於 十進位制 的 0 ~ 255 。如

二進位制 十六進位制 十進位制

00000000b 00h 0

00000001b 01h 1

00000010b 02h 2

~00001001b 09h 9

00001010b 0ah 10

00001011b 0bh 11

00001100b 0ch 12

00001101b 0dh 13

00001110b 0eh 14

00001111b 0fh 15

~11111111b ffh 255

7樓:資深技術

00h,0fh,ffh是16進位制數值,對等於10進位制00h=0,0fh=15,ffh=255。用於內部資料儲存器是指的那一個儲存器。

8樓:匿名使用者

是十六進位制數,00h表示十六進位制0;

16進位制數右下角的h代表什麼

9樓:匿名使用者

十六進位制(hexadecimal)是計算機中資料的一種表示方法。它的規則是「逢十六進一」

十六進位制數具有下列兩個特點:

英文字母a,b,c,d,e,f分別表示數字10~15。

計數到f後,再增加1個,就進位。

十六進位制數是計算機常用的一種計數方法,它可以彌補二進位制數書寫位數過長的不足,也用於電視機中。

十六進位制數的表示方式為0x開頭。

示例:0xaf=175

十六進位制(hexadecimal)是計算機中資料的一種表示方法。同我們日常中的十進位制表示法不一樣。

十六進位制數的基數是16,採用的數碼是0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。其中a-f分別表示十進位制數字10-15.十六進位制數的技術規則是「逢十六進一」,它的各位的權是以16的n次方標識的。

通常,對十六進位制數的表示,可以在數字的右下角標註16或h,但在c語言中是在數的前面加數字0和字母x即0x來表示。例如,12af在c語言中表示為0x12af。

十六進位制數的加減法的進/借位規則為:借一當十六,逢十六進一。 十六進位制數同二進位制數及十進位制數一樣,也可以寫成式的形式

「十六進位制資料95h」中「h」是什麼意思?

10樓:隨便什麼名啦啦

h 是十六進位制英文

hexadecimal的第一個字母,在95後寫h表示是十六進位制的數,不是十進位制的數

h是十六進位制的英文縮寫。

十六進位制(hexadecimal)是計算機中資料的一種表示方法。同我們日常中的十進位制表示法不一樣。

十六進位制數的基數是16,採用的數碼是0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f。其中a-f分別表示十進位制數字10-15.十六進位制數的技術規則是「逢十六進一」,它的各位的權是以16的n次方標識的。

通常,對十六進位制數的表示,可以在數字的右下角標註16或h,但在c語言中是在數的前面加數字0和字母x即0x來表示。例如,12af在c語言中表示為0x12af。

11樓:匿名使用者

h是十六進位制的英文縮寫。全拼如下

1 hex 或

2. hexadecimal

12樓:匿名使用者

錯了吧 十六進位制中沒有用h標識的啊

急求用c語言從鍵盤輸入十進位制正整數,轉換成二進位制輸出

include void main for i i 0 i printf d a i printf n 採用堆疊儲存方式,輸入的十進位制數除二餘數進棧,迴圈 最後輸出 include void main for i i 1 i 10 i printf d c i printf n void cast...

c從鍵盤輸入整數,求所有奇數的和

include int main cout system pause return 0 include int main cout 所有奇數的和為 return 0 include using namespace std void main for i 1 i 11 i cout 從鍵盤上輸入十個整...

設陣列a為含有元素的陣列,從鍵盤輸入陣列a的值

給你個思路 假設一個陣列a i 條件 i 0,i 10,i 1.然後定義a 0 是通過賦值的迴圈語句得出,鍵盤輸入第一個值scanf f a 0 後面的數可以按迴圈增加。2.更簡單,也可以自己設定輸入10次,來完成這個陣列。int a 10 int i for i 0 i 9 i scanf d a...