作者sj1973 (史考特)
看板ASM
标题Re: [问题] 组语写文书软体 极新手求指点
时间Fri May 13 12:37:38 2016
※ 引述《kamin17 (明罕)》之铭言:
: 近期老师出了个作业 是用组语写个简易文书软体
: 写到Enter功能时卡住了 目前有个想法是
: 先利用int 10h的03h抓取当前位置
: 然後写个回圈 把後面剩下的每一格利用08h抓取ascii
: 在设定座标到下一行的最前面 并且用0EH印出字
: 但这样写似乎不太可行
: 目前如果在有字的地方再次输入 都会直接覆盖掉
: 如果想要让他往後移动 概念是否和enter功能类似?
: 主要想要知道如何解决这问题..还请各位帮个忙!!
: 补:有个概念即可 我会想办法把它化为CODE!XD
第一: 我假设你在 dos prompt 下执行
第二: 我不清楚现在 bios 还有没有 support all int 10h function call, 改EFI後
很多legacy interrupt function call 都remove 掉了, int 21h m$ 也移除大部分call
我讲个概念..你参考参考
1. 你收到任何一个input key 应该找个 buffer 存
2. 处理buffer後, display 到 screen, 我印象 int10h 有可page切换, 不然就直接写
A800:0000
3. buffer 跟 screen 对应关系, 如 page, scroll bar 每一行的返回0x0d 0x0a 的关系
如你问题, 当user 按 enter, 你应该在 buffer 插入 \r\n or \r,
显示在萤幕就依照 buffer vs screen 的对应关系去填, 记得, 如果是文字模式下,
每一个字的位置都是在 a800:xxxx 都是固定位置, 当然你要用 int10h 去output 也可以
但要注意一点, 你的换行, 在萤幕要怎麽显示!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.130.164.120
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/ASM/M.1463114260.A.3CB.html