汇编课程设计PC钢琴

发布 2022-10-01 07:34:28 阅读 6744

《 汇编语言》课程设计。任。务。

书。姓名:

班级: 学号:

指导教师:贾宇波、杨东鹤

授课性质:集中。

一、题目。1.简单的计算器。

2.字典。3.“pc”钢琴。

二、目的:本次课程设计的目的是提高学生分析问题、解决问题的能力以及实际动手能力,进一步加深学生对汇编语言程序设计基本理论的理解,使学生熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础。

三、已知技术参数和设计要求:

1.编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示:

要求程序能接收键入的算式,在接收到‘=’号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。如果键入算式后再键入‘.’则显示结果并结束整个程序。(‘为整除)

2.已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16位无符号二进制数,用以说明串的长度。试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。

3.编写程序,程序运行时使pc机成为一架可弹奏的“钢琴”。当按下数字键0~9时,发出6,7,1,2,3,4,5,6,7,i,十个音调,按‘.’则退出“钢琴”状态。

总体要求。1)程序结构清晰,相对独立的功能应尽量用子程序实现。

2)有较多提示信息,以方便用户使用。

3)能检测用户输入的错误,并作相应处理。

4)每个程序应作较多测试,以证明程序的正确性。

四、实验流程图。

是。是。

是。是。否。否。

是。接收键入字符。

是否数字键y

n键入字符值转化为查表偏移量→bx结束。

常数120000h作被除数→(dx,ax)

查表得频率值作为除数。

相除结果作为计数初值→bx

设置8253计数器2的工作模式。

装入计数初值。

打开与门。延迟一段时间。

关闭与门。五、实验源**。

stack segment stack 'stack'

dw 64 dup(?)

stack ends

data segment

str1 db 'calculator a + b ',0dh,0ah,'input q quit',0dh,0ah,'please input :'0dh,0ah,'$

str2 db 0dh,0ah, 'input error,please input again or quit:',0dh,0ah,'$

str3 db

ab db 12 dup(?)

a dw 0

b dw 0

c db 15 dup(?)

c0 db 14 dup(?)

c1 dw 0

d db ?

s db 0

counta dw ?

countb dw ?

h dw 0

l dw 0

data ends

code segment

assume cs:code,ds:data,ss:stack

start:

mov ax,data

mov ds,ax

lea dx,str1

mov ah,9

int 21h输出字符串str1

sl:mov dl,0dh

mov ah,2

int 21h

mov dl,0ah

mov ah,2

int 21h回车换行。

mov s,0

mov c1,0

lea si,ab

mov ah,1

int 21h输入一个字符。

mov [si],al

mov d,al

cmp d为‘.’则终止。

jz qcmp al,30h

jb wrcmp d,39h

ja wr判断数字不在0 - 9则出错。

mov bx,0bx清零。

loop1:

inc bx

mov ah,1

int 21h

mov [si+bx],al

mov d,al

cmp d,'q'

jz qcmp d,'q'

jz qcmp d,'+

jz a1cmp d,'-

jz a1cmp d,'*

jz a1cmp d,'/

jz a1cmp d,'=

jz a2cmp d,'

jz a3cmp d,30h

jb wrcmp d,39h

ja wrjmp loop1

q: jmp quit

wr: lea dx,str2

mov ah,9

int 21h

jmp sl出错则返回重新输入运算式。

a1: cmp s,0

jnz wr

dec bx

mov counta,bx取第一个输入的数a

mov al,d

mov s,al将运算符+|-放入s

jmp loop1

a2: cmp s,0

jz xs0

dec bx

mov countb,bx取第二个输入的数b

call asc_bin将a,b转换成二进制后进行四则运算。

cmp s,'+

jz p1cmp s,'-

jz p2cmp s,'*

jz p3cmp s,'/

jz p4a3: mov dl,'=

mov ah,2

int 21h

jmp a2

p1: call p01

jmp sl

p2: call p02

jmp sl

p3: call p03

jmp sl

p4: call p04

jmp sl

xs0: lea si,ab

add si,bx

mov al,'$

mov [si],al

lea si,ab

mov dx,si

mov ah,9

int 21h

jmp sl

p01 proc加法,a+b高位存入h,低位存入l

mov dx,0

mov ax,a

add ax,b

adc dx,0

mov l,ax

mov h,dx

call xs用来将二进制转换成十进制输出,并返回重新输入运算式。

retp01 endp

p02 proc减法,若a mov ax,a

cmp ax,b

ja cnt

cmp ax,b

jz cnt

mov bx,b

mov a,bx

mov b,ax

mov dl,'-

mov ah,2

int 21h

cnt:mov ax,a

sub ax,b

mov dx,0

mov l,ax

mov h,0

call xs

retp02 endp

p03 proc乘法,a*b,结果高位存入h,低位存入l

mov dx,0

mov ax,a

mul bmov l,ax

mov h,dx

call xs

汇编课程设计

直流电机调速系统设计。摘要。脉宽调制的全称为 pulse widthmodulator 简称pwm 直流电机调速器就是调节直流电动机速度的设备,由于直流电动机具有低转速大力矩的特点,是交流电动机无法取代的,因此调节直流电动机速度的设备 直流调速器,由于它的特殊性能 常被用于直流负载回路中 灯具调光或...

汇编课程设计

湖南农业大学课程设计报告。学院 信息科学与技术学院班级 计算机科学与技术2班 姓名 陈小湾学号 200841842226 课程设计报告题目 时钟显示程序。课程名称 微机原理与接 术。评阅成绩 评阅意见 成绩评定教师签名 日期 年月日。第一部分 任务与要求。利用芯片8253和8259a完成时钟显示程序...

汇编课程设计

汇编语言课程临近结束时,将利用实验课和理论课最后阶段时间 大约14周开始,具体安排听通知 让同学们进行题目的答辩。分组 每5到6人一组,推选出组长。每组同学选一组题目,且任两组同学不得选重复组的题目,两班同学不要选相同组题目。请班长在第三周周一前将分组及选题的汇总excel电子版发到我邮箱。选第一组...