初級匯程式設計序(三)

2021-07-25 13:35:32 字數 1332 閱讀 1489

三、迴圈程式和串的傳送程式

程式設計實現將記憶體buf1中的10個位元組移至記憶體buf2中。

data segment

buf1 db 'abcdefghij'

buf2 db 10 dup(?)

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

lea si,buf1;將buf1的位址送si

lea di,buf2;將buf2的位址送di

mov cx,10;共傳送10個位元組

lop:

mov al,[si]

mov [di],al;[si]->[di]

inc si;[si]+1->si

inc di;[di]+1->di

dec cx;[cx]-1->cx

jnz lop;cx不為0時跳轉到lop

mov ah,4ch

int 21h

code ends

end start

典型的迴圈結構,接下來看結果:

可以看到,前面的41-4a為buf1,後面的41-4a為buf2

可能你會覺得這樣逐個字元傳輸太麻煩,那麼就可以使用串的傳輸:

data segment

buf1 db 'abcdefghij'

buf2 db 10 dup(?)

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

lea si,buf1

lea di,buf2

mov cx,10

cld;置df=0,傳操作處理方向從最低位址逐個處理

rep movsb;以位元組傳輸,每傳輸乙個字元執行:ds->es,di+1,si+1

cx=0時退出rep迴圈

mov ah,4ch

int 21h

code ends

end start

結果:

注意這裡是es段,可以看到000a~0013的位置就是buf2,即傳輸成功!

匯程式設計序 退出

作為第乙個匯程式設計序,本程式除了退出以外,並沒有執行其他的功能。目的 退出並向linux核心返回乙個狀態碼的簡單程式 輸入 無 輸出 返回乙個狀態碼.在執行程式後可通過輸入echo 來讀取狀態碼 變數 eax儲存系統呼叫號 ebx儲存返回狀態 section data section text g...

微機匯程式設計序

又是自學的一學期,呵呵。學到最後也就知道零星半點指令吧,複雜的程式可能還是不怎麼會寫,熟練當然也不敵c了,但是彙編之於嵌入式,往上走肯定少不了遇到,學好還是必要的!此次僅作入門吧。今日所學,明日之用。1 統計正負零的個數 datas segment array db 1,2,1,0,2,0,2,4,...

匯程式設計序呼叫c程式

首先是匯程式設計序,還是前面的例子,只是加了2行程式 extern main 說明這個函式從外面程式獲得 section data charact db a section text global start start mov ecx,charact push ecx call usestack ...