組合語言的疑惑

2021-09-13 18:13:38 字數 1419 閱讀 8633

1樓:匿名使用者

1、mov ax 5;mov cx 5;這兩條指令是雙運算元指令,其中mov是操作碼,前面一個叫做目的運算元,後面一個叫源運算元,即ax和cx都是目的運算元,數字5叫立即數。這裡所說的立即定址方式指的是源運算元是立即定址方式。所以兩條指令都對。

2、ax叫累加器,是微機中是最常用的暫存器,所以書裡總是mov ax 5的形式出現。

3、至於什麼時候用ax,cx沒有明確的規定,一般兩者都可以用。在一些特殊指令者只能用其中一種。

如:16位除法指令,因為預設源運算元為ax,所以被除數要先放在ax裡面,如mov ax,2020h;再執行div bl(bl放除數,可以用其他8位暫存器)。

再如:loop指令,執行的時候先對cx-1,然後判斷是否轉移,常用於迴圈控制。用這條指令時,需把計數初值放在cx中,即mov cx,5;

4、對於8086等系統,儲存器在cpu中,儲存器在記憶體條中。

5、因為8086有20根地址線,可定址範圍是2的20次方,編址為00000~fffff,這就是實體地址。

但是8086是16位的cpu,一次只能處理16位資料,即一次只能傳送的16位的地址訊號,沒辦法傳送20位的地址。

因此把儲存器分成若干個段,64k位為一段,段內重新編址,該地址是16位的(0000~ffff),稱為偏移量。同時每段設一個段地址,並且規定該段的首元素的實體地址為該段的段地址。由於段地址是20位的,因此,又規定段地址的低4位必須為0。

因此cpu只要傳送段地址的高16位,再新增4個0,就是段地址了。而這高16位地址就稱為段基址。

就好比大學裡有很多棟宿舍樓,編號為1、2、3...每棟樓又有101、102...

因此為了方便,我們可以把1號樓的101稱為1101。

cpu定址的時候先發出段基址,然後發出偏移量,通過alu,計算出實體地址,再通過地址線傳送出去。

6、上面已經說了,cpu一次能處理資料的位數是多少位,就是計算機的位數了。通常資料匯流排有多少根,就是多少位了。

2樓:匿名使用者

你的看是應用在一般的電腦,還是微控制器中啊

3樓:文刀舍予

具體用哪個暫存器要看指令,比如用loop的時候要向cx傳遞迴圈次數,在int中斷呼叫之前可以向相關的暫存器賦值等

mov ax,5

mov cx,5

都是合法的指令

定址應該加[ ]吧?

另外也沒有move這個指令啊,彙編裡的運算元是用,間隔的對不對用debug試一下不就知道了

暫存器是在cpu裡

儲存器有很多種,硬碟,u盤都是儲存器,主存(就是彙編裡講的定址的那個東西)當然在記憶體條裡啊

那個奇怪的定址方式主要是暫存器和地址匯流排的寬度不對應造成的,8086的地址線是20位的,可是暫存器只有16位,沒法表示20位的地址,說以就弄了這麼個奇怪的方式定址

位數好像是按通用暫存器的位數算的

懂組合語言的進,組合語言高手進

很簡單的程式。輸入的數字,是acscii碼形式的,要減去30h,才是數字形式的數字。程式中,兩個輸入數字,全都減去了30h,然後進行了加法,結果存入ral單元。輸出顯示,要先把數字,變換成ascii碼,僅僅加30h,是不全面的,數字大於9,就要加37h,這些可以去查ascii表,求得證明。dseg ...

組合語言的問題,一個組合語言的問題

jmp byte ptr bx 改正 baijmp word ptr bx byte 需改du為 zhi word才可以 shl word ptr bx 2改正 mov cx,2 shl word ptr bx cx當移位次dao數 1時,專要使用cx寄存屬器 理由抄很簡單,因為8086cpu不支援...

關於組合語言的問題,有關於組合語言的問題

樓主的從 看來的?裡面有些是錯誤的。8086 8088可定址的儲存空間只有1mb。這1mb的空間在邏輯上 注意 是邏輯上,實際上還是一個整體 被分成若干塊,每個塊的大小為64kb 其中,每一個塊中又被分成若干小節,每個小節16b,故而整個記憶體1mb可以被分為64k個小節 注意 不是64k個塊 對比...