今天一个网友在一个汇编群里问了一个问题,内容差不多就是,如何在8086汇编中用int 16h号中断接收alt+方向键(用这个组 合键移动光标)。

然后我试了一下,发现,int 16h对这个组合键没反应。

然后我没找到原因,不过找了个替补方法,就是用一直循环用int al,60h读取当前按下的键,判断是不是我需要的键。

下面方向键都为扫描码:
alt键的通码是38h,断码是b8h。左方向键是4bh,右方向键是4dh,上方向键是48h,下方向键是50h。

代码:

assume cs:code,ds:data,ss:stackstack segmentdb 256 dup (0)
stack endsdata segmentvar_x db 0var_y db 0db 256 dup (0)
data endscode segment
start:mov ax,stackmov ss,axmov sp,256mov ax,datamov ds,ax;置光标mov ah,2mov bh,0mov dh,var_ymov dl,var_xint 10hloopstart1:in al,60hcmp al,38hje loopstart2cmp al,01hje finishloopstart1jmp loopstart1endloopstart2:in al,60hcmp al,0b8hje finishloopstart2cmp al,50hje downcmp al,48hje upcmp al,4bhje leftcmp al,4dhje rightjmp loopstart2endleft:dec var_xmov ah,2mov bh,0mov dh,var_ymov dl,var_xint 10hjmp loopstart2endright:inc var_xmov ah,2mov bh,0mov dh,var_ymov dl,var_xint 10hjmp loopstart2endup:dec var_ymov ah,2mov bh,0mov dh,var_ymov dl,var_xint 10hjmp loopstart2enddown:inc var_ymov ah,2mov bh,0mov dh,var_ymov dl,var_xint 10hjmp loopstart2endloopstart2end:call far ptr fun_delayjmp loopstart2finishloopstart2:loopstart1end:jmp loopstart1finishloopstart1:mov ax,4c00hint 21h;延迟功能,自己设置dx和ax的值改变时间
fun_delay:push axpush dxmov dx,0hmov ax,0ffffhfun_delay_b:add ax,0je fun_delay_adec axjmp fun_delay_bfun_delay_a:add dx,0je fun_delay_cdec dxmov ax,0ddddhjmp fun_delay_bfun_delay_c:pop dxpop axretfcode ends
end start

功能:
你按alt+方向键可以往各个方向移动光标(没有检测超界),按esc可退出程序。

自然语言描述如下:

循环1开始读60h端口中的数据如果60h端口中的数据等于38h,就开始执行循环2,否则就跳到循环1开始循环2开始读60h端口中的数据如果60h端口中的数据等于b8h,就说明已经松开alt键,这时跳到循环1开始如果60h端口中的数据等于4bh,就将光标向左移动如果60h端口中的数据等于4dh,就将光标向右移动如果60h端口中的数据等于48h,就将光标向上移动如果60h端口中的数据等于50h,就将光标向下移动跳到循环2开始
跳到循环1开始

差不多就这个样子吧。

大家如果发现为啥int 16h不能接收alt+方向键的原因,可以与我分享下,我在这就谢谢各位了。

编程语言:8086汇编中int 16h接收alt+方向键相关推荐

  1. 8086汇编中mov,add,sub语法

    8086汇编中mov,add,sub语法 mov,add,sub三个都是两个操作数 几个必要的元素 1.数据 2.寄存器(指定一般寄存器) 3.段寄存器 4.内存单元 mov指令 mov 寄存器,数据 ...

  2. 复习8086汇编中的 CLI STI CLD STD指令

    CLI 全称 Clear Interupt STI 全称 Set Interupt CLD 全称 Clear Director STD 全称 Set Director CLI和STI是用来屏蔽中断和恢 ...

  3. 8086汇编与c++编译器就内存方面的感想

    8086汇编中可以手动分配栈内存,没有堆内存的概念,而c++编译器中栈是系统分配的,堆是手动分配的.

  4. 汇编中寄存器加[]的意思

    一般说来,加方括号 [ ] 表示一种间接的取操作数方式,有点类似于C语言中的指针概念. 第一条指令 ADD AL ,[SI] 中,[SI] 表示寄存器间接寻址. 也就是说,与AL中内容相加的加数,不是 ...

  5. 图解在8086模拟器中运行汇编helloworld程序

    汇编helloworld代码: org 100h; set video mode mov ax, 3 ; text mode 80x25, 16 colors, 8 pages (ah=0, al=3 ...

  6. c语言里10h代表什么,汇编中的10H中断int 10h详细说明

    汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序.使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用. 显示服务 (Video Service: ...

  7. 【8086汇编基础】05--常用函数库文件--emu8086.inc

    8086汇编语言初学者教程(第5部分) 常用函数库 - emu8086.inc 通过引用一些常用函数,可以使你编程更加方便.在你的程序中使用其他文件中的函数的方法是INCLUDE后面接上你要引用的文件 ...

  8. linux8086汇编环境配置,LINUX下面进行8086汇编

    LINUX下面进行8086汇编 我想问的是:LINUX下面使用什么编辑器来编辑汇编源代码?VIM? 编辑完毕之后使用什么来编译和链接? 链接完毕后如何运行? 这里举个例子 比如LINUX下面怎么写C程 ...

  9. c++ 模板类实现堆栈实验报告_编译原理——小型类C编译器的设计和实现(生成8086汇编代码)之1:问题定义以及总体功能...

    前面花了两篇文章来介绍词法分析和语法分析,接下来才是比较有意思的部分--一个小型类C编译器的设计和实现(其实是编译原理的课程设计啦!~)我用的是python2.7.13+PyQt来做的...事实上,正 ...

  10. 8086 汇编指令手册查询(转)

    8086 汇编指令手册查询,编语言是一种面向机器的语言.它能够利用计算机所在硬件性并能直接控制硬件,在微型计算机系统的开发应用和过程控制和特别受到重视. 一.数据传输指令 -------------- ...

最新文章

  1. 提高工作效率的 7 个 Vim 使用技巧!
  2. Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示
  3. The LMAX disruptor Architecture--转载
  4. Jimu : .Net Core 分布式微服务框架介绍
  5. C语言 · 龟兔赛跑预测
  6. 手机使用三年后不卡顿的有哪些牌子?
  7. C++基础——C++风格的类型转换(static_cast、const_cast、dynamic_cast、reinterpret_cast)
  8. 用集合return多个值_Laravel + Nestedset 扩展:嵌套集合模型实现无限级分类
  9. 使用mysql 函数 IFNULL 解决某些字段为null
  10. 下一个韦神?广西桂林14岁初中生保送清华丘班,明年本硕博连读!
  11. 关于中文字体的设置说明(font:12px/1.5 tahoma,arial,\5b8b\4f53)
  12. Facebook账号注册步骤
  13. 海外有哪些免费的0元虚拟主机(免费空间或者免费虚拟主机)
  14. PCL中点云特征描述与提取精通级实例解析
  15. 有关html的英文参考文献,出版英文科技专著:纠结的参考文献
  16. Java中Set接口
  17. 字典树原理详解及其Python实现
  18. oracle hint 强制索引
  19. Java基础 DAY04
  20. GXOI/GZOI2019 逼死强迫症 题解

热门文章

  1. 多智能体一致性(Consensus)中的矩阵理论(Matrix Theory)
  2. 十三、Linux驱动之触摸屏驱动
  3. Windows注册表内容详解
  4. 马哥linux2018目录,2018-01-02 马哥Linux学习笔记—Linux系统基础使用入门
  5. 为什么你玩lol遇到的队友都是坑(适用于所有moba游戏)
  6. 小程序游戏年龄计算机,2018年小程序游戏排行榜,这十款游戏你玩过几个?
  7. 太极软件qn的代码_多版本QQ内置qn、qx模块
  8. mysql数据库重新命名
  9. 【常用配置】——WPS文字常用快捷键大全【史上最全面】转
  10. iTextSharp 显示中文字体