Assembly YASM如何从内存字段中提取

Assembly YASM如何从内存字段中提取,assembly,x86,yasm,Assembly,X86,Yasm,我正在用ebe用YASM做汇编语言。我完全迷失在这个实验室里: 第五个实验室练习要求您对标准日期进行编码 MS-DOS功能57h的字段提取器。请创建一个文件 在ebe(或您选择的任何文本编辑器)中命名为date.asm 问题1-日期提取 当存储空间非常宝贵时,系统级软件通常会打包 将多个数据字段转换为单个整数。为了揭示这些数据, 应用程序通常需要提取称为位的位序列 串。例如,在实地址模式下,MS-DOS功能为57h 以DX格式返回文件的日期戳。(日期戳显示日期 位(到4表示一天) 介于1和31之

我正在用ebe用YASM做汇编语言。我完全迷失在这个实验室里:

第五个实验室练习要求您对标准日期进行编码 MS-DOS功能57h的字段提取器。请创建一个文件 在ebe(或您选择的任何文本编辑器)中命名为date.asm

问题1-日期提取

当存储空间非常宝贵时,系统级软件通常会打包 将多个数据字段转换为单个整数。为了揭示这些数据, 应用程序通常需要提取称为位的位序列 串。例如,在实地址模式下,MS-DOS功能为57h 以DX格式返回文件的日期戳。(日期戳显示日期 位(到4表示一天) 介于1和31之间的数字,第5位到第8位是月数,并且 第9位到第15位保存年份号(年份号相对于 1980年)

给定以下代码段,您需要编写代码, 它从内存中提取年、月和日(按此顺序) 字段0x515E并将其保存在指定的内存位置。你是 仅允许使用DX和另一个16位寄存器(例如BX、CX)

.asm代码段如下所示:

      segment .data
t       dw      0x515E    
day     dw      0
month   db      0
year    dw      1980

main:
xor    EDX,    EDX
mov    DX,     [t]
我是否应该通过将日、月、年移动到DX来实现这一点?比如:

       segment .data
t       dw      0x515E    
day     dw      0
month   db      0
year    dw      1980

main:
 xor    EDX,    EDX
 mov    DX,     [t]
 mov    DX,     [day]
 mov    DX,     [month]
 mov    DX,     [year]