組合語言實現功能(2)資料複製的實現

2021-08-28 04:07:12 字數 3034 閱讀 1480

assume cs:code

code segment

;做法一

;-----------------------------

mov cx,12

s: mov ax,offffh ;因為需要重複利用ax,所以需要迴圈設定

mov ds,ax

mov dl,ds:[bx] ;將資料複製到dx的低8位中

mov ax,0020h

mov ds,ax

mov ds:[bx],dl ;將資料複製到指定的記憶體單元中

inc bx ;向下乙個單元移動

loop s

;-----------------------------

;做法二,上乙個做法需要重複設定ds,這裡可改進

;-----------------------------

mov ax,0ffffh

mov ds,ax

mov ax 0020h

mov es,ax

mov bx,0

mov cx,12

s: mov dl,ds:[bx]

mov es:[bx],dl

inc bx

loop s

;-----------------------------

mov ax,4c00h

int 21h

code ends

end

assume cs:code

code segment

start: mov ax,cs

mov ds,ax

mov ax,0020h

mov es,ax ;設定複製資料的**和去處

mov bx,0

mov cx,offset last-offset start ;設定**的長度

s: mov al,ds:[bx]

mov es:[bx],al ;實現資料的轉移

inc bx

last: loop s

mov ax,4c00h

int 21h

code ends

end

assume cs:code

code segment

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

dw 16 dup(0) ;棧空間的使用

start: mov ax,cs

mov ss,ax

mov sp,30h ;棧空間是從後往前新增,棧頂指向30h

mov bx,0

mov cx,8

s: push cs:[bx]

add bx,2

loop s ;將資料段中的0~15單元中的資料壓入棧中

mov bx,0

mov cx,8

s0: pop cs:[bx]

add bx,2

loop s0 ;依次出棧8個字型資料

mov ax,4c00h

int 21h

code ends

end start

assume cs:code,ds:data,ss:stack

date segment

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

date ends

stack segment

dw 16 dup(0) ;棧空間的使用

stack ends

code segment

start: mov ax,stack

mov ss,ax

mov sp,20h ;棧開始的位址已經不包括data段的內容,則為20h

mov ax,data

mov ds,ax

mov bx,0

mov cx,8

s: push ds:[bx]

add bx,2

loop s

mov bx,0

mov cx,8

s0: pop ds:[bx]

add bx,2

loop s0

mov ax,4c00h

int 21h

code ends

end start

assume cs:code,ds:data

data segment

db 'welcome to masm!'

db 16 dup(0)

data ends

;----------------------------------

;做法一

code segment

start: mov ax,data

mov ds,ax

mov si,0 ;設定資料**的起始位置

mov di,16 ;設定資料去處的起始位置

mov cx,8 ;用暫存器進行複製,只需要8次

s: mov ax,ds:[si]

mov ds:[di],ax

add si,2

add di,2

loop s

mov ax,4c00h

int 21h

code ends

;----------------------------------

;做法二:只利用乙個暫存器就可以實現

code segment

start: mov ax,data

mov ds,ax

mov si,0

mov cx,8

s: mov ax,ds:[si]

mov ds:[si+16],ax

add si,2

loop s

mov ax,4c00h

int 21h

code ends

end start

組合語言實現功能(4)顯示功能

assume cs code,ds data data segment db welcome to masm data ends code segment start mov ax,data mov ds,ax mov bx,0 ds bx指向資料段起始位置 mov ax,0b800h mov es...

組合語言實現階乘

static int fact int n return fact n 1 n public static void main string args 開始遞迴函式呼叫 addiu sp,0,0x10010080 初始化棧位址 壓棧入參 addiu s0,0,5 n 5 sw s0,0 sp n 5...

組合語言實現氣泡排序

氣泡排序 author jrh 2011.7.10 assume ds data data segment a dw 1,4,2,5,7,9,6,3 data ends code segment start mov ax,data mov ds,ax mov cx,8 dec cx lop1 pus...