組合語言 第五章段字首及使用 一段安全的空間

2022-03-21 10:34:14 字數 2170 閱讀 1074

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

: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

總結:(1) 我們需要向一段記憶體寫入內容

(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...