尕颖 发表于 2014-3-17 17:06:21

汇编语言 王爽的 10.5(2)

检测点10.5

(2)下面的程序执行后,ax和bx中的数值为多少?

assume cs:codesg

stack segment

    dw 8 dup(0)

stack ends

codesg segment

start:

    mov ax,stack

    mov ss,ax

    mov sp,10h

    mov word ptr ss:,offset s ;(ss:)=1ah

    mov ss:,cs                ;(ss:)=cs

    call dword ptr ss:      ;cs入栈,ip=19h入栈,转到cs:1ah处执行指令

                                 ;(ss:)=cs,(ss:)=ip

    nop

s:mov ax,offset s            ;ax=1ah

    sub ax,ss:            ;ax=1ah-(ss:)=1ah-19h=1

    mov bx,cs                  ;bx=cs=0c5bh

    sub bx,ss:            ;bx=cs-cs=0

    mov ax,4c00h

    int 21h

codesg ends

end start

但是NOP起什么作用呢
BS我算出来了是0
AX是怎么算的?

vkevke_3437 发表于 2014-3-21 16:24:17

Nop占一个字节 这题ax其实就是s的地址-nop的地址=1
执行sub ax,ss:前ss栈的内容ss:0e=cs ss:0c=call 后面一条指令的地址(即nop的地址)

无名侠 发表于 2014-3-21 20:42:50

nop CPU不执行,只起到占位数的作用:big
页: [1]
查看完整版本: 汇编语言 王爽的 10.5(2)