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

2022-05-26 14:50:17 字數 3675 閱讀 9296

1樓:修安易

簡單解釋下 mov cx,2 設定迴圈計數 cx/ecx 預設是作為loop的迴圈計數器 === lea si,divarray1 獲取divarray1的地址,儲存在si中,因為後面使用了si(div word ptr[si] 獲取si地址指向的內容也就是divarray1中儲存的值10 or 1,只是要注意這裡喲很難過word ptr限制了數的存取範圍 ysh proc 一個函式 開始一句lop: xor dx,dx ; 迴圈的開始 push dx //儲存原來的dx值 or al,30h //將al與30h與計算,其實就是保留4~6位,其他為遮蔽 mov dl,al // 從這開始其實很簡單的看看bios程式設計中相關中斷條用就明瞭,解釋也到這吧 mov ah,2 int 21h求採納

2樓:祭放

這個程式的目的就是將一個2位十進位制數原樣輸出到終端,以下為每一步的解釋(註釋算一行) line 1:在資料段定義了2個字單位的數,10,1,這兩個數將分別作除數來取得2位十進位制數的十位和個位數。 line 3:

將迴圈次數存放至cx暫存器 line 4:將除數的偏移地址送至源地址指標si line 5:呼叫轉換函式 line 7:

轉換函式開始 line 8:由於除數為字單元,所以,被除數的高位將擴充套件至dx,於是,先將dx清零,保證被除數的正確性 line 9:開始做除法運算,第一次除以10,取得十位數的二進位制值 line 10:

餘數壓棧,等待下一次運算 line 11:商的二進位制值加30,即將十位數的二進位制值轉換為對應的ascii值(終端顯示支援ascii,非二進位制,故需要轉換) line 12~14:dos int21中斷02號功能呼叫,此功能為單字元顯示功能,dl存放待輸出字元的ascii值 line 15、16:

移動源地址指標,由於除數為字單元,所以,加2,使用兩次加1指令 line 17:估計這裡有點問題,應該是pop dx,這樣可以和前面的push dx對應,而且,也符合演算法的需要,由於樓主提供的ax之前壓棧的值,故根據演算法來分析,這裡不應該是ax彈棧,若在下說法正確,這一步應該是將之前保護的餘數,也就是十進位制數的個位數取出,做一次除法,並顯示 line 19:重複一次以上操作,最終,將某個十進位制數按原樣顯示到終端。

8086組合語言可以幹什麼

3樓:沙裡波特

看你水平了。

你如果是入門級別,學組合語言,你什麼也幹不了。

絕大多數人,都認為彙編沒有用。這不奇怪,水平就那麼窪,學了也白學。

你如果能開發硬體、編寫解毒程式,那就不一樣了。

4樓:匿名使用者

如果你想重新開發一個作業系統,那麼8086彙編還是有用的。

另外,8086彙編學會後,對學習其他晶片平臺比如嵌入式開發彙編有幫助。

8086組合語言裡的buf是什麼意思

5樓:

buf通常是buffer的縮寫,即緩衝區,buf只是一個標號,通常用於緩衝暫存器,你也可以把它叫另外一個名字,比如huanchong。

6樓:大別山的蝸牛

在資料段裡定義:

data segment 'code'

buf db 'my name is tang wang he bian.$'

data ends

要顯示的字串一定要用$結尾,這是dos功能呼叫9號功能的規定。

7樓:做而論道

在8086組合語言裡面,並沒有buf。

有人編寫程式,自己隨便定義的子程式名稱、變數名稱...,也許有這個。

8樓:匿名使用者

組合語言中對於buf沒有對應的定義

所以你這裡出現的buf應該是一個在前面資料段中定義好的變數,如:

data segment

buf db 100 dup(?)

data ends

後面就可以用這個名字了

9樓:匿名使用者

是定義的一個標號的名稱,

只是它出現的頻率比較高而已

8086組合語言程式設計

10樓:做而論道

data segment

org 324h

s db 28, ?

data ends

code segment

assume cs:code, ds:datastart:

mov ax, data

mov ds, ax

;如果s<50,則寫0ffh到以325h為地質的儲存器單元中;

;如果s>=100,則寫0aah到以325h為地質的儲存器單元中;

;如果50=

lea si, s

mov al, [si]

cmp al, 50

jb xy50

cmp al, 100

jae dy100

mov [si + 1], byte ptr 0bbhjmp exit

xy50:

mov [si + 1], byte ptr 0ffhjmp exit

dy100:

mov [si + 1], byte ptr 0aahexit:

mov ah, 4ch

int 21h

code ends

end start

8086組合語言題目,最好能一句一句的解釋,

11樓:匿名使用者

dword buf[6]=5,6,1,9,8,2;

dword var=0;

#define count 6

main() // statr: 後面肯定有 end start,定義入口點

var = ax;                 // 結果存放於 var 中。

}程式執行後變數var = 1

結論:迴圈比較找出 buf 陣列中最小的值,並放置結果於 var 中。

評價:此**邏輯比較糟糕,無需和陣列的第一個值比較,因為是同一個數。

8086組合語言 10

12樓:永恆

這樣的程式較亂--**寫入資料段--不符合規範的程式編碼原則。但可編譯可執行,就是不知到想要實現什麼目的。

以下**可正常除錯:

assume cs:codesg,ds:datasgdatasg segment

s: mov ax,0ffffhmov bx,1234h

mov bx,cs

mov dl,'8'

mov ah,2

int 21h

mov ax,4c00h

int 21h

datasg ends

codesg segment

start: mov ax,9999hjmp far ptr s

codesg ends

end start

在你的環境中不能通過,可能是編譯引數的問題。

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

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位資料進行向右的...

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

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

組合語言程式設計,組合語言程式設計

教你一個小招,用vc6.0編好一個c的程式,然後alt 8可以檢視彙編程式 1 include 2 void main void 3 00401055 jmp main 21h 00401031 10 for i 0 i 4 i 00401057 mov dword ptr ebp 14h 0 00...