微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 IN 指令使 x86 程序崩溃

如何解决使用 IN 指令使 x86 程序崩溃

我正在尝试使用端口 61H (PB4) 编写一个延迟计时器,并使用 function filterTable() { const filterBy = document.getElementById('filter'); // filter option select const savedData = JSON.parse(localStorage.getItem('data')); let filteredArray; if (filterBy.value === 'Node.JS') { filteredArray = savedData.filter(function (e) { return e.veranstaltung === 'Node.JS'; }) } else if (filterBy.value === 'ReactJS') { filteredArray = savedData.filter(function (e) { return e.veranstaltung === 'ReactJS'; }) } else if (filterBy.value === 'AngularJS') { filteredArray = savedData.filter(function (e) { return e.veranstaltung === 'AngularJS'; }) } for (let i = 0; i < filteredArray.length; i++) { createTable(filteredArray[i]); } } 在虚拟机上的 Windows XP 上运行它。但是,当代码运行 MASM 指令时,无论调用哪个端口,都会使程序崩溃。

IN

我不明白为什么计算机无法从端口 61h 获取数据。

解决方法

计算机可以从 I/O 端口获取数据,但前提是它以实模式或 ring 0 运行,后者为内核和设备驱动程序保留。 在原生 DOS 中,您可以读取任何您喜欢的 I/O 端口,并且即使在模拟器(NTVDM,DosBox)中运行实模式程序时,也可以读取/写入一些知名端口。

但是由于您选择了 Windows 保护模式可执行文件,这将不起作用。
改为调用 WinAPI 函数 Sleep(dwMilliseconds)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。