[经验]RS232双机通信(汇编)课程设计经验分享
我是02电子信息的,大三的时候汇编课是乐金松老师教的,当时的课程设计是做一个rs232双机通信的聊天程序。我当时花了一个星期把它搞掂了,后来还加了很多花哨的功能,比如发送进度条,字符计数器,自定义界面,自定义铃声等等功能。
我这里把我当时的文档(实验报告)贴出来,给师弟师妹一个参考。还有我贴下部分源代码(子程序),希望对师弟师妹有帮助。
下载两个附件,将附件1的后缀改成.doc(word文档),第二个改成.exe(作品,可执行文件)
[ Last edited by wool王 on 2005-12-20 at 09:39 ] 如果大家有心做电子方面的开发,奉劝大家好好学汇编,对于电子专业来说汇编是相当重要的,在大四找工作时笔试面试经常考的。而且,汇编学得好,对于大三下学期的单片机课程是个基础,如果汇编(微机原理)学得不好的话,学单片机会很吃力。 ;;扬声器发声子程序
;;入口参数di为方波频率
sound proc near
push ax
push bx
push cx
push dx
push di
;;初始化8253芯片
mov al,0b6h ;计数器2,初值16位,方式3,二进制格式
out 43h,al
mov dx,12h
mov ax,348ch ;dxax=1.193182MHz
div di ;di为待定频率
out 42h,al ;发送低字节
mov al,ah
out 42h,al ;发送高字节
in al,61h ;开扬声器8255
mov ah,al ;将扬声器初始值暂放到ah
or al,03h ;使pb0和pb1为1
out 61h,al
;;延时
mov dl1,0
mov dl2,03ffh
call delay
;;恢复8255的pb口,关闭扬声器
mov al,ah
out 61h,al
pop di
pop dx
pop cx
pop bx
pop ax
ret
sound endp ;;通信接收子程序
;;无入口参数,出口参数rd_buffer保存接收字节,该字段为特定字段
rd_com proc near
mov dx,3fdh
in al,dx
test al,01h
jz rd_exit
mov dx,3f8h
in al,dx
mov rd_buffer,al
rd_exit: ret
rd_com endp ;;屏幕显示程序
;;入口al为字符,ah为字符属性,cx为位置
display proc near
;;重要公式:排列位置的求法如下
;;位置buffer=row*160+col*2
;;ch=row,cl=col
push bx
push cx
push ax
mov al,160
mul ch
mov bl,cl
rol bl,1 ;相当于bl*2
mov bh,0
add bx,ax
pop ax
mov es:,ax
pop cx
pop bx
ret
display endp
;;清屏程序
;;入口cx为起点,dx为终点,bh为空白行属性,al为上滚行数(一般设为0)
clr_screen proc near
mov ah,06h
int 10h
ret
clr_screen endp ;;bcd码转换子程序
;;入口参数binary,出口参数bcd0到bcd1,已压缩
to_bcd proc near
mov cx,2
lea bx,
clr_buffer: mov byte ptr ,0
inc bx
loop clr_buffer
mov cx,16
do_loop: clc
rcl binary,1
mov al,bcd0
adc al,al
daa
mov bcd0,al
mov al,bcd1
adc al,al
daa
mov bcd1,al
loop do_loop
ret
to_bcd endp ;;显示方框
;;table_top=开始行,table_buttom=结束行,table_left=开始列,table_right=结束列,table_asc=图形asc码,glb_count为计数器
display_table proc near
dec table_top
dec table_buttom
dec table_left
dec table_right
push ax
push bx
mov al,table_buttom
sub al,table_top
inc al
mov bl,table_right
sub bl,table_left
inc bl
mul bl
mov glb_count,ax
pop bx
pop ax
mov ch,table_top
mov cl,table_left
display_table1: mov al,00h
cmp ch,table_top
jz display_go_on
cmp ch,table_buttom
jz display_go_on
cmp cl,table_left
jz display_go_on
cmp cl,table_right
jz display_go_on
jmp display_go_on1
display_go_on: mov al,table_asc
display_go_on1: call display
inc cl
cmp cl,table_right
jc no_cfs
je no_cfs
mov cl,table_left
inc ch
no_cfs: dec glb_count
jnz display_table1
ret
display_table endp ;;文字显示模块(注:以此子程序代替dos中断中的09h号中断)
;;cx=显示起点,bx=文字起点,ah=文字属性,dl=右边临界(注:利用这个判断换行),dh保留为列起点
display_word proc near
mov dh,cl
display_word1: mov al,
cmp al,\'$\'
jz display_word3
call display
inc cl
cmp cl,dl
jnz display_word2
inc ch
mov cl,dh
display_word2: inc bx
jmp display_word1
display_word3: ret
display_word endp 贴这么多。
如果有任何疑问欢迎交流,MSN:woolceo@hotmail.com 雪中送炭啊!我们也是乐金松老师教的!非常感谢楼主! 文件下载不了啊!! 附件文件不存在或无法读入,请与管理员联系。 师兄,你好!我是信工03级的师弟,最近急着要交汇编课程设计报告:rs232双机通信的聊天程序,是乐金松老师教的。知道你这里有,无比感激!不过下载不了,能否发word文档给我(dowonders@126.com)参考参考,非常谢谢! 现在后院的文件好像都下载不了了。
wonders我发给你了 就是下载不了~~
能发给我一份吗~~
03通信的王子~~~~~~
谢谢我的邮箱~gry83@sohu.com LZ你来得正是时候啊~~~我也正需要这个~~~
麻烦LZ也给我发一份吧~~恩人啊~~~~
偶的邮箱jackieran@sohu.com 救救兄弟我
给我一份
谢谢了
ronnie.001@126.com
你好,我是甘肃工业大学石油化工学院化学工程与工艺的学生
你好,我是甘肃工业大学石油化工学院化学工程与工艺的学生,我们学校给我们开设了一个《微机原理与接口技术》的课程,而且还有一个课程设计,但是我是学化学的,那个东西根本没有学成怎么样,现在他要求我们用8086的最小模式,8255,8253,还有8259做一个数字频率计。我真的不会,只能达到读读程序的,写个简单的初始化编程的水平!我在这个工大后院潜水也很久了,久闻你的大名,想请师兄帮帮我。我一向很向往广工,只不过,因为当年志愿报得差,成绩更差,从广东考到了兰州这个地方。我是云浮新兴人,请师兄不吝赐教!
去佐甘肃3年,连广东话都唔讲得流利。唉!师兄,尼度D桃好大只,好平,3毫纸一斤,得闲上来旅游啦!我带你去 拉卜愣寺,就系刘德华同 刘若英排《天下无贼》果度!仲有,尼度离青海湖都好近!景色好靓,仲有大草原!得闲上来啦!
学弟我的邮箱系:winter18@tom.com wool真是好人。。。 哇...看来后院在搜索引擎牌位很高啊...连省外同学都吸引过来了.
页:
[1]
2