【问题标题】:Syntax of "segment at" in assembly language汇编语言中“segment at”的语法
【发布时间】:2020-09-07 05:47:32
【问题描述】:
newsegm segment at 0B800h
...
newsegm ends

你能描述一下这是什么意思吗?我有另一个地址为 0B800h 的段? 我问的原因是: 我有一个包含这些字符串的代码

lea DX, message 
message DB "Hello, World!",'$'  
VIDEO DD 0B800h:072Eh 

老师高亮了0B800h:072Ehmessage,说用vidsegm段名写一个表达式。我不知道他想要什么,怎么做

【问题讨论】:

    标签: assembly dos x86-16 tasm memory-segmentation


    【解决方案1】:

    基本部分:
    您可以在newsegm:072Eh 的位置引用带有句柄newsegm 的视频片段中的位置的字符。

    进一步说明:
    地址0B800 十六进制是文本模式的视频段的起始地址。指令

    newsegm segment at 0B800h
    ...
    newsegm ends
    

    为此段地址定义一个快捷方式。
    在这个0B800 视频片段中,显示器上的每个字符由两个字节组成:颜色代码和字符代码。所以第二个代码示例中的地址0B800h:072Eh 指向

    072Eh/2 = 919d ;每个字符两个字节
    919d/80d = 11d;行号
    919d%80d = 39d ;列号

    它指向位置第 11 行第 39 列的字符(从 0 开始)。

    【讨论】:

    • 最后一个带有newsegm:072Eh 的句子至少应该加粗,并使用代码格式作为表达式。或者更好的是,应该在答案的顶部后面是的解释。 AFAICT,这就是问题真正要寻找的答案。
    • @PeterCordes:感谢您的有用建议。
    猜你喜欢
    • 2021-11-25
    • 2016-02-29
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多