彙編基礎 筆記4(《組合語言》第六章)

2021-05-23 18:50:34 字數 2596 閱讀 3571

程式取得所需空間的兩種方法:

1.在引導程式的時候為程式分配(討論)——通過在源程式中頂一段

2.程式在執行的過程中向系統申請

實驗五(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 ends

code segment

start:  mov ax,stack

mov ss,ax

mov sp,16

mov ax,data

mov ds,ax

push ds:[0]

push ds:[2]

pop ds:[2]

pop ds:[0]

mov ax,4c00h

int 21h

code ends

end start

cpu執行程式,程式返回前,cs=0bae,ss=0bad,ds=0bac

=>cs=x,data=x-2,stack=x-1

實驗五(5)

編寫code,將a段和b段中的資料依次相加,將結果存到c中

assume cs:code

a segment

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

a ends

b segment

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

b ends

c segment

db 0,0,0,0,0,0,0,0

c ends

code segment

start:  mov ax,a

mov ds,ax

mov dx,0

mov cx,8

s:mov ax,b

mov es,ax

mov al,ds:[bx]

mov ah,0

mov dx,ax

mov al,es:[bx]

add dx,ax

mov ax,c

mov es,ax

mov es:[bx],dx

add bx,1

loop s

mov ax,4c00h

int 21h

code ends

end start

感覺好長,不知道有沒有辦法短一點

-d 0bac:0 8

0bac:0000  01 02 03 04 05 06 07 08-00                        .........

-d 0bad:0 8

0bad:0000  01 02 03 04 05 06 07 08-00                        .........

-d 0bae:0 8

0bae:0000  00 00 00 00 00 00 00 00-00                        .........

-g 0028

ax=0bae  bx=0008  cx=0000  dx=0010  sp=0000  bp=0000  si=0000  di=0000

ds=0bac  es=0bae  ss=0bac  cs=0baf  ip=0028   nv up ei pl nz na po nc

0baf:0028 b8004c        mov     ax,4c00

-tax=4c00  bx=0008  cx=0000  dx=0010  sp=0000  bp=0000  si=0000  di=0000

ds=0bac  es=0bae  ss=0bac  cs=0baf  ip=002b   nv up ei pl nz na po nc

0baf:002b cd21          int     21

-pprogram terminated normally

-d 0bae:0 8

0bae:0000  02 04 06 08 0a 0c 0e 10-00                        .........

實驗五(6)

編寫code**,用push指令將a段中的word資料,逆序儲存到b段中

assume cs:code

a segment

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

a ends

b segment

dw 0,0,0,0,0,0,0,0

b ends

code segment

start:  mov ax,b

mov ss,ax

mov sp,16

mov ax,a

mov ds,ax

mov bx,0

mov cx,8

s:push ds:[bx]

add bx,2

loop s

mov ax,4c00h

int 21h

code ends

end start

彙編筆記 第六章

title 彙編筆記 第六章 date 2018 12 26 17 44 59 tags 先看程式 assume cs codesg codesg segment dw 0123h,0456h,0789h,0abch,0fedh,0cbah,0987h start mov bx,0 mov ax,0...

組合語言(王爽)第六章

6.1 在 段中使用資料 程式設計以下8個資料的和,結果存在ax暫存器中,用迴圈累加的方式 想用迴圈,就需要把這些資料儲存在一組位址連續的記憶體單元中,之前提到過應該讓系統來分配空間,因此我們在程式中定義希望處理的資料,這些資料最終會成為程式的一部分寫到可執行檔案中,可執行檔案載入到記憶體中後,這些...

王爽 組合語言 第六章檢測題分析

一 在intel8086環境下,下列說法合理的是 3 1 組合語言程式載入記憶體後處於64k空間以外的資料和指令將無法使用和執行。2 乙個資料段命名為data,此標號代表這個資料段在記憶體中的起始位址。3 如果載入的程式沒有返回語句,那麼當程式 執行完畢,將繼續讀取後續記憶體空間 儲存的指令到cpu...