首页 > 解决方案 > 汇编语言中“segment at”的语法

问题描述

newsegm segment at 0B800h
...
newsegm ends

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

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

老师强调0B800h:072Ehmessage说用 vidsegm 段名写一个表达式。我不知道他想要什么和做什么

标签: assemblydosx86-16tasmmemory-segmentation

解决方案


基本部分:
您可以参考视频片段中 position 处的字符,句柄newsegm位于 position 处newsegm:072Eh

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

newsegm segment at 0B800h
...
newsegm ends

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

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

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


推荐阅读