在PC机上用汇编语言实现简单的人机交互程序.docx

上传人:b****5 文档编号:5937973 上传时间:2023-01-02 格式:DOCX 页数:12 大小:233.57KB
下载 相关 举报
在PC机上用汇编语言实现简单的人机交互程序.docx_第1页
第1页 / 共12页
在PC机上用汇编语言实现简单的人机交互程序.docx_第2页
第2页 / 共12页
在PC机上用汇编语言实现简单的人机交互程序.docx_第3页
第3页 / 共12页
在PC机上用汇编语言实现简单的人机交互程序.docx_第4页
第4页 / 共12页
在PC机上用汇编语言实现简单的人机交互程序.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

在PC机上用汇编语言实现简单的人机交互程序.docx

《在PC机上用汇编语言实现简单的人机交互程序.docx》由会员分享,可在线阅读,更多相关《在PC机上用汇编语言实现简单的人机交互程序.docx(12页珍藏版)》请在冰豆网上搜索。

在PC机上用汇编语言实现简单的人机交互程序.docx

在PC机上用汇编语言实现简单的人机交互程序

在PC机上用汇编语言实现简单的人机交互程序

实验器材电脑

实验思路人机交互,即电脑与人的交流,电脑与人之间的对话也是其中一种,我实现人机交互是电脑与人的简单对话,教人用设置好的程序画图。

流程图

实验步骤

1将下面的程序输入电脑的asm文件中

SSEGSEGMENTPARASTACK'stack'

db60hdup('sseg...');初始化堆栈大小为100

SSEGENDS

DSEGSEGMENT

buf1db'Hello!

$'

buf2db'Hi!

$'

buf3db'Doyoulovepicture?

$'

buf4db'Pleasechooseyesorno.$'

buf5db'Youcantryitnow.$'

buf6db'Youareimpolite!

$'

buf7db'Youarepolite!

Ilikeit!

$'

buf8db'Youmadeanerror!

$'

buf9db'Pleasechooseagain!

$'

buf10db'IthinkIcannottalkmorewithyou!

$'

buf11db'Bye-Bye!

$'

buf12db'Ifyouwantturnup,pleasepressw!

$'

buf13db'Ifyouwantturndown,pleasepresss!

$'

buf14db'Ifyouwantturnleft,pleasepressa!

$'

buf15db'Ifyouwantturnright,pleasepressd!

$';定义输出的字符串

DSEGENDS

ESEGSEGMENT

;附加段:

在此处添加程序所需的数据

ESEGENDS

CSEGSEGMENT

assumecs:

CSEG,ds:

DSEG,es:

ESEG,ss:

SSEG

MAINPROCFAR;主程序入口

movax,dseg

movds,ax

movax,eseg

moves,ax;输入端口设置

begin:

leadx,buf1;将buf1的首地址传给dx

movah,9

int21h;输出buf1的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标人在第一列

movah,07

int21h;输入字符

movbl,al

cmpbl,104;比较字符与h得ascall码值

jnzl1;判断为h的话程序继续执行不为h的话程序跳转到了l1

leadx,buf2;将buf2的首地址传给dx

movah,9

int21h;输出buf2的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

leadx,buf7;将buf7的首地址传给dx

movah,9

int21h;输出buf7的内容

jmpstart;跳转到start程序

l1:

leadx,buf6;将buf6的首地址传给dx

movah,9

int21h;输出buf6的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

start:

leadx,buf3;将buf3的首地址传给dx

movah,9

int21h;输出buf3的内容

leadx,buf4;将buf4的首地址传给dx

movah,9

int21h;输出buf4的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

choose:

movah,07

int21h;无回显方式输入字符

movbl,al

cmpbl,110;比较字符与n得ascall码值

jzl2;判断不为的话程序继续执行为n的话程序跳转到了l2

cmpbl,121;比较字符与y得ascall码值

jzl3;判断不为的话程序继续执行为y的话程序跳转到了l3

leadx,buf8;将buf8的首地址传给dx

movah,9

int21h;输出buf8的内容

leadx,buf9;将buf9的首地址传给dx

movah,9

int21h;输出buf9的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

jmpchoose;跳转到choose程序

l2:

leadx,buf10;将buf10的首地址传给dx

movah,9

int21h;输出buf10的内容

leadx,buf11;将buf11的首地址传给dx

movah,9

int21h;输出buf11的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

jmpexit;跳转到exit程序

l3:

leadx,buf5;将buf5的首地址传给dx

movah,9

int21h;输出buf5的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

leadx,buf12;将buf12的首地址传给dx

movah,9

int21h;输出buf12的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

leadx,buf13;将buf13的首地址传给dx

movah,9

int21h;输出buf13的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

leadx,buf14;将buf14的首地址传给dx

movah,9

int21h;输出buf14的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

leadx,buf15;将buf15的首地址传给dx

movah,9

int21h;输出buf15的内容

movdl,0ah

movah,02

int21h;输出换行

movdl,0dh

movah,02

int21h;输出回车,实现换行后,光标任在第一列

movbh,00

movah,03

int10h;得到当前光标的位置dh为行位置dl为列位置

movch,dh;将行位置传给ch

jmppicture;跳转到picture程序

picture:

movah,07

int21h;无回显方式输入字符

cmpal,’w’

jzup

cmpal,'s'

jzdown

cmpal,'a'

jzleft

cmpal,'d'

jzright

jmppicture;跳回到picture程序

up:

subdh,1

movbh,00

movdh,dh

movah,2

int10h

movbh,00

moval,'|'

movah,0ah

movcx,1

int10h

jmppicture;跳回到picture程序

down:

adddh,1

movbh,00

movdh,dh

movah,2

int10h

movbh,00

moval,'|'

movah,0ah

movcx,1

int10h

jmppicture;跳回到picture程序

left:

subdl,1

movbh,00

movdl,dl

movah,2

int10h

movbh,00

moval,'-'

movah,0ah

movcx,1

int10h

jmppicture;跳回到picture程序

right:

adddl,1

movbh,00

movdl,dl

movah,2

int10h

movbh,00

moval,'-'

movah,0ah

movcx,1

int10h

jmppicture;跳回到picture程序

exit:

movah,1

int21h

movax,4c00h

int21h

MAINENDP

CSEGENDS

ENDMAIN

2对程序进行编译

3对程序进行连接

4运行程序

实验结果

程序运行结果

程序刚执行的画面

当你按下h时

当你没有按下h,而是其他键时

当你选择y时

当你选择n时

你可以使用wsda实行画图

实验心得

体会到编程最难弄的是构思,和程序的调试,这个程序长度很长,构思了一天,程序调试了一中午才弄出来,翻阅的书籍就只有《微机原理与接口技术》的教科书,感觉学到很多东西。

参考资料《微机原理与接口技术

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1