-
後一條指令是div bx,表示你正在做16位除法,那麼預設被除數是[dx,ax],其中dx是被除數較高的16位,ax是被除數的較低16位,其實你的被除數只儲存在ax中,那麼被除數的高位應該清零, 例如,如果你想計算 72 8,但被除數必須是 4 位數字,那麼你的被除數應該寫成 0072 嗎?
至於為什麼報錯,那是因為如果沒有零,那麼DX裡有資料,而且這個數字比除數BX大,結果是溢位的(16位除法的預設商儲存在ax中,ax是乙個16位暫存器,如果被除數較高的16位大於除數, 那麼商會超過16位二進位數,不能用ax儲存,自己驗證一下),可以嘗試將dx設定為1、2、3等小於除數0ah的資料,不會報錯。
-
我覺得這個函式有問題,cmp ax,0 ja out1 應該改為 out2
這個函式是這樣轉換的,迴圈中將 ax 中的值除以 10,直到 ax 中的值為 0,每次除以時將值儲存在 dl 中,然後加上 30h 逐個顯示。
此 DX 不設定零表示除法誤差,此時 DX 中一定不為零,然後除以 10,則無法載入 AX 的結果。
-
1.判斷以下編譯語句的正確性並解釋原因。
mov [ax],bh ;錯了,ax 不能將位址訪問括起來。
mov [sp],ax ;錯了,sp 不能放在括號裡。
out 10h,cl ;false,則 out 命令中的源運算元只能是 ax 或 al
cmp 36h,al ;如果為 false,則 CMP 命令中的意圖運算元不能是即時數字。
2.指示符用作符號位址,當它出現在操作數字段中時,jmp begin 語句中的符號 begin 表示目標位址; 但是,在迴圈開始中,它同時表示目標位址和偏移位址,它們之間有什麼區別嗎? 為什麼會有這樣的區別?
JMP指令可以訪問記憶體中的任何空間,而迴圈只能訪問-128 + 127之間的記憶體空間,因此它是相對位移。
3。線段邊界定義線段...。結束和流程定義過程endp 和模組定義名稱...。end 和有什麼不一樣? 感謝您的補充問題:
這是關於了解段、流程和模組之間的區別。
間接定址只能用 bx、dx、si、di 來完成嗎? 只能使用 ax 和 dx 完成輸出和輸入操作嗎?
間接定址只能使用 bx、dx、si 完成,而在操作中使用 ax、al、dx 和 0 255 個直接埠位址即可完成。
-
1.沒什麼對的。 內部應為 bx、dx、di,不應使用 CL 暫存器。 cmp al,36h
-
內部應為 bx、dx、di,不應使用 CL 暫存器。 cmp al,36h
-
l=6;
l equ abuf-buf 其實是求出 buf 占用的記憶體大小,一共六個位元組。 0x3,0x4,0x5,0x31,0x32,0x33
如果 buf 只是乙個標記,它可以做什麼? 這個名字是白手起家的。
這裡的 BUFF 相當於 C 語言中的 temp,它臨時儲存資料。
-
BUF可以理解為儲存器中單元格的符號位址,即該位址由符號表示。 在此問題中,buf 是儲存資料 3 的儲存單元的位址。 l 是儲存資料 0 的單元位址 abuf 和 buf 之間的差值,值應為 6。
計算過程如下:設 buf 表示的位址值為 0(其中儲存資料 3),則後面的 4、5、'123'、0 分別佔據位址 1、2、3、4、5、6; 所以 l=6-0=6。
組合語言可以說是機器語言,直接與硬體打交道的是將計算機語言轉化為機器可以識別的1001。 它不會過時,至少在這十年內不會。 不過,這主要是關於硬體方面。 >>>More
我無法刪除它。 like to do sth.
或者喜歡做 sth它是乙個固定短語,like 和 play 都是動詞,它們是句子中的謂語。 >>>More
你好! 英語知識是"一般指"懂英語,固定用法。 中文很容易被語言的感覺所選擇,可以這樣翻譯,並且掌握英語知識。 如果你仔細觀察,你不會使用它。 >>>More