急。一道8086彙編,請高手幫忙解釋一下意思

2025-07-15 12:35:03 字數 3984 閱讀 4196

1樓:弦飛x號

要考試了吧?自己問問老師。

8086組合語言 解釋

2樓:修安易

簡單解釋下 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求採納。

3樓:祭放

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

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

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

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

一道組合語言的題,請詳細解釋。謝謝!

4樓:做而論道

詳細解釋?

解釋什麼?是不是需要程式設計啊?

彙編題目解答!急!請高手幫幫忙!

5樓:昨天我很壞

你出的第一道題第二個push是不是bx啊?你先檢查一下題目錯沒錯再給你解答。

一條簡單的8086組合語言提問

6樓:

這個程式有點錯誤。 改正後倒是可以在如xp等的控制檯視窗裡執行。

code segment

assume cs:code

e:mov ax,0b800h

mov ds,ax

mov al,'b'

push ax

call s11

mov cx,4c00h ; 誤,改成mov ax, 4c00h

int 21h

s11:mov bp,sp

mov ax,[bp+2]

mov ds:[1],01011001b ; 這是顏色值吧,寫成mov byte ptr ds:[1], 01011001b 更佳。

mov ds:[0],al ;寫傳過去的ascii字元到視訊記憶體。

ret 2code ends

end e最後是執行的時候要注意,最好在執行前先開好cmd視窗,在cmd命令提示符中把本程式所在的目錄設為當前目錄。

因為本程式直接訪問了視訊記憶體,所以要在虛擬86環境下執行,可能輸出的顯示效果有問題,且因為執行結果與螢幕有關,在執行前分別執行下cls(清屏)與。

debug然後輸入q退出debug,最後再輸入本程式可執行程式名執行,一般來說會看到執行結果。

7樓:宇文夢旋

mov指令的執行速度會比lea指令更快 再就是 offset 只能與簡單的符號位址相連 而不能和諸如var1[si]等複雜運算元相連 其他應該就沒什麼不同了。

8樓:網友

程式裡面沒有要求顯示字元的dos中斷啊?

8086組合語言 高手求救啊

9樓:網友

data segment

buf dw 10,15,17,8600,2,5,4,67,90,23,77

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov bx,0

mov cx,buf[bx];快取區第乙個資料是個數為10

dec cx

l1: mov dx,cx

l2: add bx,2

mov ax,buf[bx]

cmp ax,buf[bx+2]

jge count1

xchg ax,buf[bx+2]

mov buf[bx],ax

count1:loop l2

mov cx,dx

mov bx,0

loop l1

mov ah,4ch

int 21h

code ends

end start

10樓:網友

冒泡法的關鍵是for迴圈,先用c語言寫出冒泡法,然後翻譯成彙編即可。

至於for迴圈如何翻譯成彙編,這個好說,djne命令就能,比如將r1中存10,然後djne r1,loop這樣就能實現。

至於冒泡的交換,這個用匯編不難實現吧,我就不說了。

求一道簡單的8086彙編程式

11樓:網友

;求兩個數減法取絕對值。

name example

dseg segment

x db 40h

y db 98h

z db ?

dseg ends

sseg segment para stackdb 80h dup(0)

sseg ends

cseg segment

assume cs:cseg,ds:dseg,ss:ssegstart:mov ax,dseg

mov ds,ax

mov al,x

sub al,y

jns xg

neg al;取相反數。

xg:mov z,al

mov ah,4ch;返回dos

int 21h

cseg ends

end start

12樓:網友

;用組合語言求大正方形(邊長5)和小正方形(邊長4)之間環形的面積的程式。

data segment

d_r dw 5;大正方形邊長。

d_s dw ?;大正方形面積。

x_r dw 4;小正方形邊長。

x_s dw ?;小正方形面積。

h_s dw ?;環形面積。

data ends

code segment

assume cs:code,ds:datastart: mov ax,data

mov ds,ax

mov ax,d_r

mul d_r;計算大正方形面積。

mov d_s,ax

mov ax,x_r

mul x_r;計算小正方形面積。

mov x_s,ax

mov ax,d_s

sub ax,x_s;計算環形面積。

mov h_s,ax

mov ax,4c00h

int 21h

code ends

end start

請幫忙解一道初中數學題,急,謝謝

這道題的關鍵是找到af的最大值時的狀態,而af取最大值時ce值也是最大,所以要想ce值最大,abd需在一條直線上。具體做法如圖 希望對你有所幫助 af最小值為2倍根號10再減去2 這是一道初中數學概率題,望高手幫忙詳細解答一下,請寫出具體步驟,謝謝 拜託了各位 謝謝 任意取一把鑰匙,開任意一把鎖,一...

請幫忙解答一道題,急急急,請幫忙解答一道題,急急急

不知道這題究竟要考察什麼,僅把我觀察到的一種規律寫下來,供參版考。1 找到五邊形邊上五權個值中最小的那個,按順時針方向找到它的下乙個值,計算他們的差值。具體來說,第乙個五邊形,邊上最小的是5,它的順時針下乙個值是9,差值是4 第二個五邊形,邊上最小的是3,它的順時針下乙個值是4,差值是1 第三個五邊...

問一道組合語言的題目,急求解答,一道彙編題目線上等求解答,答案怎麼計算出來的,

複製的是什麼?你自己說得很清楚了 下面的程式的功能食將 mov ax,4c00h 之前的 指令 複製到記憶體0 200處,從 到 從 當前位置 0 200h 不過位置好像有些不對,因為0 200h還在系統的中斷向量區,會破壞系統的,絕對導致宕機。有多少位元組?如何知道要複製的位元組的數量?笨的辦法是...