汇编实习一()

     在代码中,将起始地址为0:240,长度为16个字节的内存区域初始化为

0011h,0122h,0233h,0344h,0455h,0566h,0677h,0788h 要求:

    (1)把前面指定的数据,复制到起始地址为0:200的内存中去

    (2)用栈的机制实现将0:200 – 215中的数据顺序逆转

    (3)将0:200 – 215中的数据加和,传送到DX中 将代码完成,并编译、连接,生成exe文件,在Debug中调试

assume cs:b,ds:a,ss:c 
a segment     
      dw 0011h,0122h,0233h,0344h,0455h,0566h,0677h,0788h
a ends
c segment 
      dw 0,0,0,0,0,0,0,0;,0,0,0,0,0,0,0,0
c ends
b segment
d:     mov ax,a
        mov ds,ax    ;ds指向a段
        mov bx,0
    
    mov ax,0024h
    mov es,ax
    mov cx,16
  s:   mov dl,[bx]
        mov  es:[bx],dl
    inc bx
    loop s

        mov ax,0020h
    mov ds,ax
    mov bx,0

    mov cx,16
  s0: mov dl,es:[bx]
        mov [bx],dl
    inc bx
        ;inc bx
    loop s0

    mov ax,c
    mov ss,ax ;指向ss段

    mov bx,0
        mov cx,8
  s1: push [bx] ;栈操作为两个字节
        add bx,2
    loop s1

       mov bx,0
       mov cx,8
  s2:pop[bx]
       add bx,2
       loop s2

       mov bx,0   ;1403:001A
       mov dx,0
       mov cx,8
  s3:add dx,[bx] 
       add bx,2
       loop s3
    mov ax,4c00h
    int 21h
b ends
end d
原文地址:https://www.cnblogs.com/XDJjy/p/3017278.html