《組合語言第二版 王爽》實驗五,5 6題

2022-09-13 12:42:08 字數 2562 閱讀 6954

第五題:

基本思路:將a段中的資料複製到c中,然後用b中的資料與c段相加(add c, b)。

需要注意一下幾點:

資料型別是:位元組型的,暫存器只能用類似於al、ah之類的;

直接將資料中乙個段存到另乙個段中是不可行的,類似於:mov es:[bx], ds[bx],應該要借助於暫存器。

1 assume cs:

codesg

2a segment

3 db 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8

4a ends

5b segment

6 db 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8

7b ends

8result segment

9 db 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0

10result ends

11codesg segment

12start:

13mov

ax, a

14mov

ds, ax

15mov

ax, result

16mov

es, ax

1718

mov bx, 0

19mov cx, 8

20s1:

21mov

al, [bx]

22mov

es:[bx], al

23inc

bx24

loop s1

2526

mov ax, b ;

change ds to segment b

27mov

ds, ax

2829

mov bx, 0

30mov cx, 8

31s2:

32mov

al, [bx]

33add

es:[bx], al

34inc

bx35

loop s2

3637

movax, 4c00h

38int

21h

3940

codesg ends

4142 end start

輸出結果:

基本思路:將段b作為stack段,a段作為data段。一次將a段中前8個字push到棧中(b段)。

需要注意的地方:

資料型別是字型,即2個位元組;

注意初始化暫存器sp,即計算b段長度:2*8;

雖然利用mov直接將資料中乙個段存到另乙個段中是不可行的,但是push卻可以,例如:push ds:[bx],該過程用mov表達即(注:可能無法編譯):mov ds:[bx], ss:[sp];

1

assume cs : codesg

2a segment

3 dw 1, 2, 3, 4, 5, 6, 7, 8, 9

, 0ah, 0bh, 0ch, 0dh, 0eh, 0fh, 0ffh

4a ends

5b segment

6 dw 0, 0, 0, 0, 0, 0, 0, 0

7b ends89

codesg segment

10start:

11mov ax, a ;

data segment

12mov

ds, ax

13mov ax, b ;

stack segment

14mov

ss, ax

15mov

sp, 10h

1617

mov bx, 0

18mov cx, 8

19beg:20;

mov ax, ds:[bx]21;

push ax

22push

ds:[bx]

23add bx, 2

24loop beg

2526

movax, 4c00h

27int

21h28

codesg ends

2930 end start

輸出結果:

後記:由於開始時不知道push預設的運算元據長度(16位),而過於小心使用了如下方法push字型資料

mov ax, ds:[bx]

push ax

後來改為:

push ds:[bx]

輸出的結果是一樣的。

王爽彙編第二版實驗5

1 assume cs code,ds data,ss stack data segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h data ends stack segment dw 0,0,0,0,0,0,0,0 stack end...

王爽彙編第二版實驗4

1 程式設計,向記憶體0 200 0 23f依次傳送資料0 63.assume cs code code segment start mov ax,0020h mov ds,ax mov bx,0 mov cx,40h s mov bx bx inc bx 每次移動一位,覆蓋高位,保留低位 loop...

組合語言 《組合語言》王爽 實驗一

從 1000 0 開始寫入命令 a 1000 0 mov ax,4e20 add ax,1416 mov bx,2000 add ax,bx mov bx,ax add ax,bx mov ax,001a mov bx,0026 add al,bl add ah,bl add bh,al mov a...