55 兩個簡單的匯程式設計序注釋

2021-10-23 06:18:54 字數 2531 閱讀 8009

輸出hello world,visual studio可以執行的

.386                            ; tells masm to use intel 80386 instruction set.

.model flat,stdcall ; flat memory model

option casemap:none ; treat labels as case-sensitive

include c:\masm32\include\windows.inc

include c:\masm32\include\kernel32.inc

includelib c:\masm32\lib\kernel32.lib

include c:\masm32\include\user32.inc

includelib c:\masm32\lib\user32.lib

.data ; begin initialized data segment

msgboxcaption db "win32 assembly programming",0

msgboxtext db "hello world!!!welcome to asm programming under clr",0

.code ; beginning of code

start: ; entry point of the code

invoke messagebox, null, addr msgboxtext, addr msgboxcaption, mb_ok

invoke exitprocess, null

end start

西電的奔騰微機原理p304的**:

.dosseg;段次序按dos段次序約定排序

.model small;記憶體模組採用小模式,佔記憶體小,效率高

.486;採用486偽指令

.stack 300h;建立3*16*16=768個位元組的堆疊段

.data;以下存放near的有賦初值的資料,組名是dgroup

back db 2000 dup(' ');申請2000個位元組,存放的都是空格,注意''中間有空格

.code;以下存放**

start:;標識程式入口

myproc proc far;主過程模式是far,表示在段間

mov ds,ax;dgroup位址賦給ds和es

mov es,ax;ds是資料段暫存器,es是附加段暫存器

mov cx,08h;設定計數暫存器為8,等下loop的時候就可以迴圈8次

mov bl,00h;10h中斷寫串的時候設定背景,背景是黑色

;again: lea bp,back;load effective address(lea),把back的位址賦給基址指標暫存器

mov dx,0000;資料暫存器清零,注意mov時候的位數

mov ah,19 ;write string

;呼叫10h中斷來顯示字串時,各暫存器的作用如下:

;al = write mode, bh = page number, bl = color,cx = number of characters in string,

;dh = row, dl = column, es:bp = offset of string

mov al,1 ;設定寫串屬性string contains alternating characters and attributes

push cx;將迴圈次數暫時壓入堆疊中

mov cx,07d0h;07d0h是十進位制的2000,在10h中斷下表示寫2000個字元

int 10h;interrupt(int)呼叫中斷,10h是中斷號,一般和video services有關

;call delay;呼叫delay這個過程,call有near和far之分。調完就回到原來的地方繼續執行

;也可以在子過程中通過ret來跑回原來的地方。注意和jmp的區別

add bl,10h;背景色變更

pop cx;把存在棧中的計數器的值再要回來

loop again;cx若不等於0,則繼續迴圈回到again標識處執行指令

mov ax,4c00h

int 21h;呼叫21h中斷,ah是4c

myproc endp;結束主過程myproc

delay proc near;dealy子過程是near型

push dx

push cx

mov dx,10

p1:mov cx,0ff00h

p2:dec cx

jnz p1

pop cx

pop dx

ret;用ret返回到call;

delay endp

end start

簡單的匯程式設計序分析

section data section text globl start start movl 1,eax movl 4,ebx int 0x80 將這段程式儲存為hello.s,然後用彙編器as把匯程式設計序中的助記符翻譯成機器指令 彙編指令與機器指令是對應的 生成目標檔案hello.o。然後用...

最簡單的AT T匯程式設計序

把這個程式儲存成檔案start.s 匯程式設計序通常以.s作為檔名字尾 用彙編器 assembler as把匯程式設計序中的助記符翻譯成機器指令,生成目標檔案start.o as start.s o start.o 然後用鏈結器 linker,或link editor ld把目標檔案start.o鏈...

對乙個簡單匯程式設計序分析

程式 assume cs codesg codesg segment mov ax,0123h mov bx,0456h add ax,bx add ax,ax mov ax,4c00h int 21h codesg ends end偽指令 偽指令是寫給編譯器看的,cpu不會執行,在源程式中,包括兩...