1- 段字首
mov ax,ds:[bx]
mov ax,cs:[bx]
mov ax,ss:[bx]
mov ax,es:[bx]
mov ax,ss:[0]
mov ax,cs:[0]
這些出現在訪問記憶體單元的指令中,用於顯式的指明記憶體單元的段位址的"ds,cs,ss,es"在組合語言中稱為段字首
2- 一段安全的空間
在8086模式中,隨意向一段記憶體空間寫入內容是很危險的,因為這段記憶體空間可能存放著重要的**或資料.
1會發生錯誤.assume cs:code
2code segment
3 mov ax,0
4mov ds,ax
5 mov ds:[26h],ax67
mov ax:4c00h
8int
21h9
code ends
10 end
在作業系統環境中工作,作業系統管理所有資源,也包括記憶體,如果我們需要向記憶體空間寫入資料的話,要使用作業系統給我們分配的空間.而不應直接用位址任意指定記憶體單元,向裡面寫入.
1 ;將記憶體ffff:0~ffff:b單元中的資料拷貝到0:200~0總結:(1) 我們需要向一段記憶體寫入內容:20b單元中
2assume cs:code
3code segment
4mov ax,0ffffh
5mov ds,ax67
mov ax,0020h
8mov es,ax
910 mov dx,0
11 mov bx,0
12 mov cx,12
13s:mov dl,ds:[bx]
14mov es:[bx],dl
15inc bx
16loop s
1718
mov ax,4c00h
19int
21h20
code ends
21 end
(2) 這段記憶體空間不應存放系統或其他程式的資料和**,否則寫入操作很可能發生錯誤
(3) dos方式下一般情況 0:200-0:300空間中沒有系統或其他程式資料和**
(4) 以後如果需要向一段記憶體中直接寫入內容時,就使用0:200-0:300這段空間
0:200-0:300 可轉為 0200h-0300h 即 020:0-030:0
3- [bx]和loop的使用
;向記憶體0:200-0:23f依次傳送資料0-63(3fh)
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,
0mov cx,
65s:mov ds:[bx],bl
inc bx
loop s
mov ax,4c00h
int21h
code ends
end
;將mov ax,4c00h之前的指令複製到記憶體0:200處assume cs:code
code segment
mov ax,code
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,
0mov cx,18h ;執行時debug p10.exe,後-r cx的值為1dh,為整個程式的長度,按照題目要求mov ax,4c00h之前的指令,那麼mov ax,4c00h / int 21h 長度為5h 所以 1dh - 5h =18h
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int21h
code ends
end
mov ax,4c00h / int 21h 長度為5h,為5位元組,機器指令為b8004c cd21組合語言第五章檢測題
實驗 1 程式設計,向記憶體0 200 0 23f依次傳送資料0 63 3fh 2 程式設計,向記憶體0 200 0 23f依次傳送資料0 63 3fh,程式只能使用9條指令,9條指令包括 mov ax,4c00h 和 int 21h 3 下面的程式的功能是將 mov ax,4c00h 之前的指令複...
組合語言 第五章 BX 和loop指令
1 bx mov ax,bx mov bx ax 2 loop指令 loop指令的格式是 loop 標號 cpu執行loop指令時,要進行兩步操作 cx cx 1 cx中存放迴圈次數 判斷cx中的值,不為零則轉至標號處執行程式,如果為零則向下執行。用cx和loop指令相配合實現迴圈功能的程式框架 m...
組合語言之第五章 BX 和loop指令
一 bx bx 和之前用過的有些類似,都是表示記憶體單元,而它的偏移位址在bx中。段位址預設在ds中 描述乙個記憶體單元 需要知道,1記憶體單元的位址,2記憶體單元的長度 型別 二 loop inc bx的含義是bx中的內容加1 loop指令的格式是 loop 標號 cx是用來控制迴圈執行次數的 c...