微机显示程序设计(1)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机实验报告

(1)

实验程序:

title draw--program to draw on screen with

read_c equ 0

key_rom equ 16h

up equ 48h

down equ 50h

right equ 4dh

left equ 4bh

block equ 0dbh

esc1 equ 1bh

video segment at 0b800h

wd_buff label word

v_buff db 25*80*2 dup(?)

video ends

pro_nam segment

main proc far

assume cs:pro_nam,es:video

start:

push ds

sub ax,ax

push ax

mov ax,video

mov es,ax

mov cx,80*25

mov bx,0

clear:

mov es:[wd_buff+bx],0700h

inc bx

inc bx

loop clear

mov ch,12d

mov cl,40d

get_char:

mov ah,read_c

int key_rom

cmp al,esc1

jz exit

mov al,ah

cmp al,up

jnz not_up

dec ch

not_up:

cmp al,down

jnz not_down

inc ch

not_down:

cmp al,right

jnz not_right

inc cl

not_right:

cmp al,left

jnz lite_it

dec cl

lite_it:

mov al,160d

mul ch

mov bl,cl

rol bl,1

mov bh,0

add bx,ax

mov al,block

mov es:[v_buff+bx],al

jmp get_char

exit:

ret

main endp

pro_nam ends

end start

思考题:

1、显示器是如何定义窗口的大小的?

答:显示器是根据显存的单元数,v_buff db 25*80*2 dup(?),定义窗口大小的。

2、在文本方式下,什么是属性值?

答:block equ 0dbh是定义的属性值,v_bluff+bx+1,是放每个单元(一共25*80个)属性值的地方,即每个单元的高字节。

3、光标轨迹运行到边界后,为什么光标会闪烁和改变颜色?若要光标不变,应如何修改程序?

答:光标移位所使用的语句是循环移位,当光标由边界移到另一边边界时方块字符的属性值发生错位相乘,所以光标会闪烁和改变颜色。若要光标不变,应将循环移位ROL改为逻辑移位SHL。

(2)

实验程序:

stack segment

dw 64 dup(?)

stack ends

code segment

assume cs:code,ss:stack

start:

mov cx,001ah

mov bl,41h

mov ah,02h

a1: mov dl,bl

int 21h

inc bl

push cx

a2: loop a2

pop cx

dec cx

jnz a1

mov ah,4ch

int 21h

code ends

end start

结果:

修改程序:

stack SEGMENT

DW 64 DUP(?)

stack ENDS

code SEGMENT

ASSUME CS:code,SS:stack start:

MOV CX,0008h

a0: PUSH CX

MOV BL,31h

MOV CX,0009h

MOV AH,02h

a1: MOV DL,BL

INT 21h

INC BL

PUSH CX

a2: LOOP a2

POP CX

DEC CX

JNZ a1

MOV AH,02h

MOV DL,20h

INT 21h

POP CX

DEC CX

JNZ a0

MOV AH,4ch

INT 21h

code ENDS

END start

结果:

相关文档
最新文档