(1)编译连接后再debug中加载跟踪后

书上填空如下,程序返回前data段中的数据不变

(2)汇编连接后

书上填空,

(3)汇编连接后

书上填空

(4)修改代码后只有(3)可以实现,(3)中的code段在data段和stack段之前

(5)

assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends

b segment
db 1,2,3,4,5,6,7,8
b ends

c1 segment 
db 8 dup(0)
c1 ends    
code segment
start:
mov ax,a
mov ds,ax

mov ax,b
mov ss,ax

mov ax,c1
mov es,ax

mov bx,0
mov cx,8
s:
mov al,ds:[bx]
add al,ss:[bx]
mov es:[bx],al
inc bx

loop s

mov ax,4c00h
int 21h
code ends

① 在实现数据相加前,逻辑段 c 的 8 个字节

② 执行完实现加运算的代码后,逻辑段 c 的 8 个字节

结果正确

(6)

assume cs:code
a segment
  dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
  dw 8 dup(0)
b ends

code segment
start: 
    mov ax,a
    mov ds,ax

    mov ax,b
    mov ss,ax
    mov sp,10h

    mov bx,0
    mov cx,8
s:
    push ds:[bx]
    add bx,2

    loop s

    mov ax,4c00h
    int 21h
code ends
end start

① 在 push 操作执行前,查看逻辑段 b 的 8 个字单元信息截图

② 执行 push 操作,然后再次查看逻辑段 b 的 8 个子单元信息截图

结果正确

总结:我还是不太明白为什么第(4)个的原因,只有模糊的概念。

真的太为难了。