汇编语言(第三版) 第六章课后习题答案

检测点6.1

(1)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:

assume cs:codesg

codesg segment

    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

start: mov ax,0

    mov ds,ax

    mov bx,0

    mov cx,8

s:  mov ax,[bx]

     mov cs:[bx],ax

    add bx,2

    loop s

    mov ax,4c00h

    int 21h

codesg ends

end start

(2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:

assume cs:codesg

codesg segment

    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

    dw 0,0,0,0,0,0,0,0,0,0

start: mov ax, codesg ;或mov ax, cs

    mov ss,ax

    mov sp, 24h    ;或mov sp, 36     ;(第一版填1ah或26)

    mov ax,0

    mov ds,ax

    mov bx,0

    mov cx,8

s:  push [bx]

     pop cs:[bx]   ;或 pop ss:[bx]

    add bx,2 

    loop s

    mov ax,4c00h

    int 21h

codesg ends

end start

(1)程序如下。

assume cs:code

data segment

dw 2 dup (0)

data ends

code segment

start: mov ax,dtat

     mov ds,ax

     mov bx,0

     jmp word ptr [bx+1]

code ends

end start

若要使jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?

答案①db 3 dup (0)

答案②dw 2 dup (0)

答案③dd 0

jmp word ptr [bx+1]为段内转移,要CS:IP指向程序的第一条指令,应设置ds:[bx+1]的字单元(2个字节)存放数据应为0,则(ip)=ds:[bx+1]=0

简单来说就是,只要ds:[bx+1]起始地址的两个字节为0就可以了

猜你喜欢

转载自blog.csdn.net/PoorGuy_tn/article/details/80621698