九九乘法表程序
九九乘法表
一、课程设计目的
本课程设计是继《微机系统及应用》课程之后的一次综合性设计、实验训练。根据微机系统及应用课程教学的重点和主要知识点及工程实际需要,设置汇编语言程序设计、PC机内部接口和8086系统接口电路设计等设计题目。要求学生综合本课程和其它相关课程中学到的80X86系统结构、汇编语言设计、典型接口芯片、电路电子技术等相关知识进行程序设计、硬件接口电路设计和调试,系统地掌握微机原理和接口技术的相关知识,实现知识的融会贯通。要求学生通过1.5周的学习,提高设计汇编语言程序的能力和技巧,培养实现一个简单应用系统功能的硬件软件设计能力。
二、课程设计内容
汇编语言程序设计及调试
用汇编语言编写九九乘法表在屏幕上显示出来,而且能按一定规律显示.1键为横向排列;2键为颜色输出;0键为取消该功能
源程序代码
DATAS SEGMENT
NUM DB 0AH,0DH,0ah,'100900319 FAN YUYU',0dh,'$'
X DB 15 dup(?)
Y DB 15 dup(?)
table1 db 'PLEASE INPUT 0-2:$' table2 db '---------------------------1:mutli 2:color
0:exit-----------------------------$'
table3 db 'WARNING:PLEASE INPUT 0-2$' ;此处输入数据段代码 col DB 00001000b,00000011b,00000100b,00000111b,00000001b
DB 00000110b,00001111b,00000000b,00000010b,00000101b ;定义显示颜色 DATAS ENDS
STACKS SEGMENT STACK ;此处输入堆栈段代码
DW 100H DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS main proc far ;定义主程序
push ds
sub ax,ax ;清零操作
push ax
mov ax,DATAS ;数据段赋值给AX
mov ds,ax
lea dx,table2 ;自定义数据送给DX
mov ah,9 ;功能号为9 ,显示
int 21h
call back ;调用子程序,实现回显与清除
t: lea dx,table1
mov ah,9 ;功能号为9 ,显示;
int 21h
mov ah,1
int 21h
mov bl,al
call back ;调用子程序,实现回显与清除
cmp bl,30h ;‘0’赋给BL
jz q
cmp bl,31h ;‘1’赋给BL
jz n
cmp bl,32h ;‘2’赋给BL
jz m
lea dx,table3 ;显示table3定义内容
mov ah,9 ;功能号为9 ,显示 int 21h
call back
jmp t ;跳转到t
n: call mutli jmp t
m: call color jmp t
q: MOV DX,OFFSET NUM
MOV AH,9 ;显示功能
INT 21H
MOV AH,1 ;键盘输入并回显 INT 21H
mov ah,4ch ;中断调用
int 21h
pop ax ;恢复现场
pop ds
ret
main endp
mutli proc near ;九九乘法输出函数
push bx ;保护现场
push cx
push dx
SUB AX,BX
PUSH AX
MOV AX,DATAs MOV DS,AX
MOV BL,0
MOV X,BL ;X=0 MOV BH,1
MOV Y,BH ;Y=1 MOV CL,BL
LOOP1:
ADD BL,1 ;PRINT X
MOV DL,BL
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,'*' ;PRINT *
MOV AH,2
INT 21H
MOV DL,BH ;PRINT Y
ADD DL,30H MOV AH,2 INT 21H
MOV DL,'=' ;PRINT =
MOV AH,2 INT 21H
MOV AL,BH ;PRINT Z=X*Y
IMUL BL
MOV AH,00H MOV CH,0AH IDIV CH
MOV DH,AH CMP AL,0 JZ LOOP3 ;比较后跳转 ADD AL,30H LOOP2:
MOV DL,AL MOV AH,2H INT 21H
ADD DH,30H MOV DL,DH MOV AH,2 ;显示输出 INT 21H
MOV DL,20H MOV AH,2 INT 21H
CMP BL,BH JL LOOP1 MOV DL,0AH ;键盘输入到缓冲区
MOV AH,2 INT 21H
MOV DL,0DH MOV AH,2 INT 21H
MOV BL,CL ADD BH,1 CMP BH,10 JL LOOP1 JMP EXIT LOOP3:
MOV AL,20H JMP LOOP2 EXIT:
MOV AH,07H ;键盘输入无回显
INT 21H
pop ax
pop dx
pop cx
pop bx ;恢复现场
ret
mutli endp
color proc near ;颜色输出函数 push ax
push bx
push cx
push dx
MOV AX,DATAs MOV DS,AX
;========MAIN()===========
MOV BH,01H
LOP1: MOV BL,01H LOP2: MOV AL,BH MUL BL
CALL DISPLAY ;调用显示子程序 INC BL
CMP BL,BH
JBE LOP2
CALL CRLF
INC BH
CMP BH,9
JBE LOP1
MOV DX,OFFSET NUM MOV AH,9
INT 21H
MOV AH,1
INT 21H
;===========================
pop dx ;恢复现场
pop cx
pop bx
pop AX
ret
color endp
;------------------------
CRLF PROC NEAR
PUSH AX
PUSH DX
MOV AH,2
MOV DL,0AH ; 键盘输入到缓冲区 INT 21H
MOV DL,0DH ;键盘复位
INT 21H
POP DX
POP AX
RET
CRLF ENDP
OUTX PROC NEAR PUSH AX
PUSH DX
MOV AH,2
INT 21H
POP DX
POP AX
RET
OUTX ENDP
;----------------------------
DISPLAY PROC NEAR
PUSH DX
CMP AL,10
JAE DISP1
MOV DL,' ' ;打印空格
CALL OUTX
JMP DISP2
DISP1: MOV DL,10
MOV AH,0
DIV DL
MOV DL,AL
ADD DL,'0'
;--------------------------------------
cmp bl,bh
jne show5
call writecc jmp show1
show5: cmp bl,1 ;小于或等于比较后跳转 ;结果为正就转移
jne show6
call writecc jmp show1
show6: cmp bh,9 jne show
call writecc
jmp show1
;-----------------------------------------------
show: CALL OUTX show1: MOV AL,AH DISP2: MOV DL,AL ADD DL,'0'
;------------------------------------------------
cmp bl,bh
jne show4
call writecc
jmp show3
show4: cmp bl,1 jne show7
call writecc
jmp show3
show7: cmp bh,9 jne show2
call writecc
jmp show3
;--------------------------------------------------
show2: CALL OUTX show3: MOV DL,' ' CALL OUTX
CALL OUTX
pop dx
RET
DISPLAY ENDP
WriteCC PROC near push AX
push bx
push cx
push dx
push si
xor AH,AH ;清零操作
MOV dh,9
MOV AL,dh
MOV si,AX
MOV AH,9 ; 显示字符串
MOV AL,DL
MOV bh,0 MOV bl,col[si]
MOV cx,1 INT 10h
MOV AH,3 INT 10h
MOV AH,2 ;显示输出 inc DL ;自加
INT 10h
pop si
pop dx
pop cx
pop bx
pop AX
ret
WriteCC ENDP
back proc near
mov dl,0Ah mov ah,2 int 21h
mov dl,0Dh mov ah,2 int 21h
ret
back endp
MOV AH,4CH INT 21H
CODES ENDS END
本文档为【九九乘法表程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。