請分析這道8086組合語言程式,用8086組合語言編寫程式,接受從鍵盤上輸入的一個兩位十進位制數字,這個數經過BCD碼處理,以十六進位制顯示出

2021-08-14 23:03:40 字數 3356 閱讀 8802

1樓:匿名使用者

code segment ;段開始標誌assume cs:code ;用assume將cs與該code段關聯起來

start: ;程式入口標誌

mov al,0abh ;對將資料放入暫存器ax中,(ax)=0abh

mov cl,4 ;對將資料放入暫存器cx中,(cx)=4rol al,cl ;對al的8位資料進行向右的迴圈左移,一共移動4位(也就是cx的值)。所謂迴圈右移1位,就是將最低位的0或1放到最高位,其他位向右移動1位。這樣移動4位之後,al中的低四位資料就跑到高四位了,而高四位資料跑到低四位了。

mov ax,4c00h ;剩下兩句是用來終止程式用的int 21h

code ends ;段結束標誌

end start ;程式結束標誌

2樓:匿名使用者

好基礎啊, 好基礎.

code segment ;;**段開始

assume cs:code ;;**段地址

start:mov al,0abh ;;start是一個標籤, 取運算元0abh 放在暫存器al中

mov cl,4 ;;將4放在暫存器cl中

rol al,cl ;;將al中的數迴圈左移cl位(4位), 完成高低4位互換

mov ax,4c00h ;;4c00 -> ax

int 21h ;;呼叫中斷21h, 退出程式

code ends

end start

最終執行完...就是在cpu中換了下高低位, 什麼也沒有輸出. over.

3樓:

code segment ;;**段開始

assume cs:code ;;**段地址和cs段暫存器關聯

start:mov al,0abh ;;start是一個標籤, 將運算元0abh 放在暫存器al中

mov cl,4 ;;將4放在暫存器cl中

rol al,cl ;;將al中的數迴圈左移4位 左移的位數時根據cl的值來決定

mov ax,4c00h ;;21號中斷的4c號功能用於退出程式返回執行權給作業系統

int 21h ;;呼叫中斷21h, 退出程式 不寫這個你的程式執行後dos就會死住無法繼續操作

code ends

end start

4樓:匿名使用者

start: al=0xab

cl=4

al迴圈左移4位後al=0xba

ax=0x4c00

執行中斷21(程式 返回)

用8086組合語言編寫程式,接受從鍵盤上輸入的一個兩位十進位制數字,這個數經過bcd碼處理,以十六進位制顯示出

5樓:做而論道

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

disp_str macro x ;巨集定義.

mov dx, offset x

mov ah, 9

int 21h

endm

;----------------------

data segment ;資料段.

msg1 db 13, 10, 'please input : $'

msg3 db 13, 10, 'the hex is : $'

x dw ? ;存放新輸入資料.

data ends

;----------------------

code segment ;**段.

assume cs: code, ds: data

start:

mov ax, data

mov ds, ax

;--------------------------------

in_loop:

disp_str msg1 ;巨集呼叫,提示 please input :

;--------------------------------

mov x, 0 ;資料清零.

_inx:

mov ah, 1 ;輸入字元.

int 21h

;--------------------------------

cmp al, 13 ;回車?

je _in_end ;是則結束輸入.

cmp al, '0'

jb in_loop ;小於'0',不是數字.

cmp al, '9'

ja in_loop ;大於'9',不是數字.

sub al, '0'

mov cl, al

mov ch, 0

mov ax, x

mov bx, 10 ;老資料乘以10

mul bx

add ax, cx ;加上新資料.

mov x, ax ;儲存.

cmp ax, 99

ja in_loop

jmp _inx

;--------------------------------

_in_end:

disp_str msg3 ;巨集呼叫,提示 the hex is :

mov ax, x

mov bx, 16

mov cx, 0

d_1:mov dx, 0

div bx

add dl, '0'

cmp dl, 3ah

jb zzz

add dl, 7

zzz:

push dx

inc cx

cmp ax, 0

jne d_1

mov ah, 2

d_2:pop dx

int 21h

loop d_2

;--------------------------------

mov ah, 4ch

int 21h

;--------------------------------

code ends

end start

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

6樓:匿名使用者

學彙編,要用到哪些軟體

8086組合語言解釋,8086組合語言可以幹什麼

簡單解釋下 mov cx,2 設定迴圈計數 cx ecx 預設是作為loop的迴圈計數器 lea si,divarray1 獲取divarray1的地址,儲存在si中,因為後面使用了si div word ptr si 獲取si地址指向的內容也就是divarray1中儲存的值10 or 1,只是要注...

組合語言以後可以幹嘛,8086組合語言可以幹什麼

組合語言是一種功能很強的程式設計語言,也是利用計算機所有硬體特性並能直接控制硬體的語言。學好以後可以做微控制器 做作業系統 編譯器 反正底層開發肯定是需要的。學彙編,可以學到硬體方面的知識。學會了,對以後的工作,一定是有些好處的。但是,得不償失。放棄彙編,就可以學習,更有用的知識。不知道,個人也覺得...

用組合語言寫程式輸入數進行以下運算

我不會c 演算法通訊演示c語言 包括中無效的主要 無效 其他 結果 輸出 後共 e操作 n 結果 我沒有測試,也沒有編譯你應該嘗試.組合語言 設計一個子程式,可以根據輸入的n,計算並輸出n的3次方 輸入0 40,求立方,並顯示 code segment assume cs code,ds codeo...