王爽《組合語言》第三版 實驗10

2021-10-14 16:07:01 字數 3278 閱讀 4460

**

assume cs:code

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

call show_str

mov ax,4c00h

int 21h

show_str:

push ax

push es

push di

push dx

push bx

push si

mov ax,0b800h ;視訊記憶體顯示位址起始位置

mov es,ax

mov di,0

mov al,0a0h ;每行

dec dh ;行號從0開始算, 所以8-1=7, 0-7

mul dh ;第n-1行

add di,ax

mov al,2 ;每列 0-1 2-3 4-5

dec dl ;與行號同理

mul dl ;第n-1列

add di,ax

mov bl,cl ;儲存著色

s: mov cl,[si] ;從字串首位址開始

mov ch,0

jcxz ok ;迴圈字串每個字元,直到遇見0,跳轉到 標記 ok

mov es:[di],cl ;視訊記憶體顯示規則 每個字元占用兩個位元組 前者儲存字元本身本身

mov es:[di+1],bl ;視訊記憶體顯示規則 後者儲存閃爍、背景、高亮、前景等

add di,2

inc si

loop s

ok:

pop ax

pop es

pop di

pop dx

pop bx

pop si

retcode ends

end start

結果

使用 000f(dx 高位) 4240(ax 低位) / 0a(cx 除數)

結果儲存在 ***x(dx 高位) ***x(ax 低位) xx(cx 餘數)

示例:000f 4240 / 0a

1)0000 000f / 0a = 0001(商) … 0005(餘數)

2)0005 4240 / 0a = 86a0 (商)… 0000 無餘數

3)結果 0001 86a0

assume cs:code

code segment

start: mov ax,4240h

mov dx,000fh

mov cx,0ah

call divdw

mov ax,4c00h

int 21h

divdw: push ax

mov ax,dx

mov dx,0

div cx

mov bx,ax

pop ax

div cx

mov cx,dx

mov dx,bx

retcode ends

end start

結果

assume cs:code

data segment

db 10 dup(0)

data ends

code segment

start: mov ax,12666

mov bx,data

mov ds,bx

mov si,0

call dtoc

mov dh,8

mov dl,3

mov cl,2

call show_str

mov ax,4c00h

int 21h

dtoc: push ax

push bx

push si

mov bx,10

mov si,0

s1: mov dx,0

div bx

add dx,30h

push dx

mov cx,ax

inc si

inc cx

loop s1

mov cx,si

mov si,0

s2: pop [si]

inc si

loop s2

pop si

pop bx

pop ax

retshow_str: push ax

push es

push di

push dx

push bx

push si

mov ax,0b800h ;視訊記憶體顯示位址起始位置

mov es,ax

mov di,0

mov al,0a0h ;每行

dec dh ;行號從0開始算

mul dh ;第n行

add di,ax

mov al,2 ;每列

mul dl ;第n列

add di,ax

mov bl,cl ;儲存著色

s: mov cl,[si]

mov ch,0

jcxz ok

mov es:[di],cl

mov es:[di+1],bl ;視訊記憶體顯示規則

add di,2

inc si

loop s

ok:

pop ax

pop es

pop di

pop dx

pop bx

pop si

retcode ends

end start

顯示結果

王爽《組合語言》 第三版 實驗10解析

assume cs code 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 call show str ...

《組合語言》王爽第三版 實驗9

datas segment 此處輸入資料段 db w 00000010b,e 00000010b,l 00000010b,c 00000010b,o 00000010b db m 00000010b,e 00000010b,0,t 00100100b,o 00100100b,0 db m 01110...

王爽 組合語言第三版實驗7

這個題目做了很久,使用了2中方法做出了結果,不過目前在單步除錯時還有點疑問。題目 power idea公司從1975成立一直到1995年的基本情況被定義到了datasg中,程式設計將datasg段中的資料寫入到table段中,並計算21年中的人均收入 取整 結果儲存到table段中 兩種方法我都使用...