1)了解8086汇编程序的基本结构
2)掌握循环程序的基本设计方法。
- 实验设备
- 实验原理
本节实验显示的图形可以分为上下两部分。对于上半部分图形,需要设置两层循环,其中外循环控制显示几行(初始为9,每次减1,减到0时结束);内循环控制当前行显示几个′*′(初值为1,每次加1)。对于下半部分图形,也需要设置两层循环,其中外循环控制显示几行(初始为9,每次减1,减到0时结束);内循环控制当前行显示几个空格(初值为8,每次减1)和几个′*′(初值为1,每次加1)。
在屏幕上显示单个字符的语句如下:
MOV DL,<要显示的字符>
MOV AH,2
INT 21H
- 实验内容
*
**
***
****
*****
******
*******
********
*********
*
**
***
****
*****
******
*******
********
*********
程序的框架如下:
data segment
pkey db "press any key...$"
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
;初始化bl和bh,显示上半部分
next:
;内循环计数器 cl=bh
next1:
;显示’*’
cl=cl-1
;如果cl≠0,则转到next1
;显示’0DH’
;显示’0AH’
bh=bh+1
bl=bl-1
;如果bl≠0,则转到next
;初始化bl、ch和bh,显示下半部分
next2:
cl=ch;设置空格数
;如果cl=0,则转到next3
next4:
;显示’ ’
;cl=cl-1
;如果cl≠0,则转到next4
next3:
cl=bh
;如果cl=0,则转到next5
next6:
;显示’*’
cl=cl-1
;如果cl≠0,则转到next6
next5:
;显示’0DH’
;显示’0AH’
ch=ch-1
bh=bh+1
bl=bl-1
;如果bl≠0,则转到next2
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
- 实验习题
若要显示如下形式的三角形,该如何修改程序?
*
***
*****
*******
*********
***********
*************
***************
*****************
- 写出完整的程序。
- 使用不同数据测试程序并解释运行结果。
--------------------------------------------------------------------------------------------------------------------------------
程序代码1 :
MOV CX,9
A:MOV BX,CX
MOV AX,9
SUB AX,BX
MOV CX,AX
ADD CX,1
B:MOV DL,'*'
MOV AH,2
INT 21H
LOOP B
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
MOV CX,BX
LOOP A
MOV CX,9
C:MOV BX,CX
MOV AX,BX
SUB AX,1
MOV CX,AX
CMP CX,0
JE F
D:MOV DL,20H
MOV AH,2
INT 21H
LOOP D
F:
MOV AX,9
SUB AX,BX
MOV CX,AX
ADD CX,1
E:MOV DL,'*'
MOV AH,2
INT 21H
LOOP E
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
MOV CX,BX
LOOP C
运行结果图:
----------------------------------------------------------------------------------------------------------------------------
实验习题1:
代码如下:
MOV CX,9
C:MOV BX,CX
MOV AX,BX
SUB AX,1
MOV CX,AX
CMP CX,0
JE F
D:MOV DL,20H
MOV AH,2
INT 21H
SUB CX,1
LOOP D
F:
MOV AX,9
SUB AX,BX
MOV CX,AX
ADD CX,1
E:MOV DL,'*'
MOV AH,2
INT 21H
LOOP E
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
MOV CX,BX
SUB CX,1
LOOP C
运行截图: