1、在PC机上用汇编语言实现简单的人机交互程序 在PC机上用汇编语言实现简单的人机交互程序实验器材 电脑实验思路 人机交互,即电脑与人的交流,电脑与人之间的对话也是其中一种,我实现人机交互是电脑与人的简单对话,教人用设置好的程序画图。流程图实验步骤 1 将下面的程序输入电脑的asm文件中SSEG SEGMENT PARA STACK stack db 60h dup(sseg.) ;初始化堆栈大小为100SSEG ENDSDSEG SEGMENT buf1 db Hello!$ buf2 db Hi!$ buf3 db Do you love picture?$ buf4 db Please ch
2、oose yes or no.$ buf5 db You can try it now.$ buf6 db You are impolite!$ buf7 db You are polite! I like it!$ buf8 db You made an error!$ buf9 db Please choose again!$ buf10 db I think I can not talk more with you!$ buf11 db Bye-Bye!$ buf12 db If you want turn up, please press w !$ buf13 db If you wa
3、nt turn down, please press s !$ buf14 db If you want turn left, please press a !$ buf15 db If you want turn right, please press d !$ ;定义输出的字符串 DSEG ENDSESEG SEGMENT ;附加段:在此处添加程序所需的数据ESEG ENDSCSEG SEGMENT assume cs:CSEG, ds:DSEG, es:ESEG, ss:SSEG MAIN PROC FAR ;主程序入口 mov ax, dseg mov ds, ax mov ax,es
4、eg mov es, ax ;输入端口设置 begin: lea dx,buf1 ;将buf1 的 首地址传给dx mov ah,9 int 21h ;输出buf1的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标人在第一列 mov ah,07 int 21h ;输入字符 mov bl,al cmp bl,104 ;比较字符与h 得ascall码值 jnz l1 ;判断 为h的话 程序继续执行 不为h的话 程序跳转到了l1 lea dx,buf2 ;将buf2 的 首地址传给dx
5、mov ah,9 int 21h ;输出buf2的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 lea dx,buf7 ;将buf7 的 首地址传给dx mov ah,9 int 21h ;输出buf7的内容 jmp start ;跳转到start程序 l1: lea dx,buf6 ;将buf6的 首地址传给dx mov ah,9 int 21h ;输出buf6的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov
6、 ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 start: lea dx,buf3 ;将buf3的 首地址传给dx mov ah,9int 21h ;输出buf3的内容 lea dx,buf4 ;将buf4 的 首地址传给dx mov ah,9 int 21h ;输出buf4的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 choose: mov ah,07 int 21h ;无回显方式输入字符 mov bl,al cmp bl,110 ;比较字
7、符与n得ascall码值 jz l2 ;判断不 为的话 程序继续执行 为n的话 程序跳转到了l2 cmp bl,121 ;比较字符与y 得ascall码值 jz l3 ;判断 不为的话 程序继续执行 为y的话 程序跳转到了l3 lea dx,buf8 ;将buf8 的 首地址传给dx mov ah,9 int 21h ;输出buf8的内容 lea dx,buf9 ;将buf9 的 首地址传给dx mov ah,9 int 21h ;输出buf9的内容 mov dl,0ah mov ah,02 int 21h ; 输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实
8、现换行后,光标任在 第一列 jmp choose ;跳转到choose程序l2: lea dx,buf10 ;将buf10 的 首地址传给dx mov ah,9 int 21h ;输出buf10的内容 lea dx,buf11 ;将buf11 的 首地址传给dx mov ah,9 int 21h ;输出buf11的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 jmp exit ;跳转到exit程序l3: lea dx,buf5 ;将buf5 的 首地址传给dx mov
9、 ah,9 int 21h ;输出buf5的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 lea dx,buf12 ;将buf12 的 首地址传给dx mov ah,9 int 21h ;输出buf12的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 lea dx,buf13 ;将buf13的 首地址传给dx mov ah,9 int 21h
10、;输出buf13的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 lea dx,buf14 ;将buf14的 首地址传给dx mov ah,9 int 21h ;输出buf14的内容 mov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 lea dx,buf15 ;将buf15 的 首地址传给dx mov ah,9 int 21h ;输出buf15的内容 m
11、ov dl,0ah mov ah,02 int 21h ;输出换行 mov dl,0dh mov ah,02 int 21h ;输出回车,实现换行后,光标任在第一列 mov bh,00 mov ah,03 int 10h ;得到当前光标的位置dh为行位置dl为列位置 mov ch,dh ;将 行位置传给ch jmp picture ;跳转到picture程序 picture: mov ah,07 int 21h ;无回显方式输入字符 cmp al,wjz up cmp al,s jz down cmp al,a jz left cmp al,d jz right jmp picture ; 跳
12、回到picture程序up: sub dh,1 mov bh,00 mov dh,dh mov ah,2 int 10h mov bh,00 mov al,| mov ah,0ah mov cx,1 int 10h jmp picture ; 跳回到picture程序 down: add dh,1 mov bh,00 mov dh,dh mov ah,2 int 10h mov bh,00 mov al,| mov ah,0ah mov cx,1 int 10h jmp picture ; 跳回到picture程序left: sub dl,1 mov bh,00 mov dl,dl mov a
13、h,2 int 10h mov bh,00 mov al,- mov ah,0ah mov cx,1 int 10h jmp picture ; 跳回到picture程序right: add dl,1 mov bh,00 mov dl,dl mov ah,2 int 10h mov bh,00 mov al,- mov ah,0ah mov cx,1 int 10h jmp picture ; 跳回到picture程序exit: mov ah,1 int 21hmov ax, 4c00h int 21hMAIN ENDP CSEG ENDSEND MAIN2 对程序进行编译3 对程序进行连接4 运行程序实验结果 程序运行结果 程序刚执行的画面当你按下h时当你没有按下h,而是其他键时当你选择y时当你选择n时你可以使用w s d a 实行画图实验心得 体会到编程最难弄的是构思,和程序的调试,这个程序长度很长,构思了一天,程序调试了一中午才弄出来,翻阅的书籍就只有微机原理与接口技术的教科书,感觉学到很多东西。参考资料 微机原理与接口技术
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1