如何用完整汇编语言编写程序?

把 S_Data 为首地址的 100 个字节 数,第 1 个数乘 2 加第 2 个数的值存储到以 D_Data 为首地址的 50 个数的第1 个数保存,S_Data 第 3 个数乘 2 加第 4 个数的值存储到以 D_Data 为首地 址的 50 个数的第 2 个数保存, 以此类推。(要求有详细注释及流程图)

可参考

section .data
    S_Data db 1, 2, 3, 4, ... ; 假设S_Data为100个字节数据
    D_Data db 50 dup(0) ; 初始化D_Data为50个字节数据,初始值为0

section .text
    global _start

_start:
    mov ecx, 50 ; 循环50次,每次处理两个数
    mov esi, S_Data ; S_Data的首地址
    mov edi, D_Data ; D_Data的首地址

loop_start:
    mov al, [esi] ; 获取S_Data的第一个数
    mov bl, [esi + 1] ; 获取S_Data的第二个数
    add al, al ; 第一个数乘以2
    add al, bl ; 第一个数加上第二个数
    
    mov dl, [esi + 2] ; 获取S_Data的第三个数
    mov cl, [esi + 3] ; 获取S_Data的第四个数
    add dl, dl ; 第三个数乘以2
    add dl, cl ; 第三个数加上第四个数
    
    mov [edi], al ; 结果保存到D_Data的第一个数
    mov [edi + 1], dl ; 结果保存到D_Data的第二个数

    add esi, 4 ; S_Data指针向后移动4个字节
    add edi, 2 ; D_Data指针向后移动2个字节

    loop loop_start

    ; 程序结束
    mov eax, 1
    xor ebx, ebx
    int 0x80