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

2021-08-28 04:50:19 字數 1482 閱讀 2414

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,ax ;設定顯示記憶體空間的起始位置

mov si,64 ;設定字串在一行中的中間位置

mov cx,16 ;設定迴圈的次數為字串的長度

s: mov al,ds:[bx]

mov ah,20h ;設定第一行的開始位置和顏色

mov es:[si+6e0h],ax

mov ah,42h ;設定第二行的開始位置和顏色

mov es:[si+780h],ax

mov ah,71h ;設定第三行的開始位置和顏色

mov es:[si+820h],ax

inc bx ;設定字串的偏移

add si,2 ;設定下一次迴圈的寫入位置

loop s

mov ax,4c00h

int 21h

code ends

end start

assume cs:code,ds:data

data segment

db 'welcome to masm!',0

data ends

code segment

start: mov dh,8

mov dl,3

mov cl,2

mov ax,data

mov ds,ax

mov si,0 ;ds:si指向資料段首位址

call show_str

mov ax,4c00h

int 21h

show_str: mov ax,0b800h

mov es,ax ;es指向顯示記憶體空間的段位址

mov ax,160

dec dh

mul dh

mov dh,0

dec dl

add dl,dl

add ax,dx

mov di,ax ;設定di指向字串要顯示的偏移位址

mov ah,cl

show: mov cx,ds:[si]

jcxz ok ;設定在遇到字元0的時候退出

mov al,ds:[si]

mov es:[di],ax

add di,2

inc si

loop show

ok: retf

code ends

end start

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

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...

組合語言實現功能(1)用迴圈累加實現乘法

assume cs code code segment mov ax,2 add ax,ax 實現程式的返回 mov ax,4c00h int 21h code ends endassume cs code code segment mov ax,2 mov cx,11 設定迴圈次數,只需相加11次...

《組合語言》實驗4

1 程式設計,向記憶體0 200 0 23f依次傳送資料0 63。assume cs code code segment mov ax,20h mov ds,ax mov bx,0 mov cx,64s mov bx bl inc bx loop s mov ax,4c00h int21hcode ...