王爽汇编 检测点6.1的(2) 问题

assume cs:codecode segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h dw 0,0,0,0,0,0,0,0,0,0start: mov ax,cs mov ss,ax mov sp,24h mov ax,0 mov ds,ax mov bx,0 mov cx,8s: push [bx] pop cs:[bx] add bx,2 loop smov ax,4c00h int 21hcode endsend start这题想得头大了都不知道怎么理解他 dw 0,0,0,0,0,0,0,0,0,0 这句应该怎么理解他 有没有大神能一步一步的把整体解释一下。。。。?
为什么第一个要填mov ax,cs 第二个填mov sp,24h ?

前面有讲过
mov ax,cs
mov ss,ax
这目的就是为了让堆栈段指向代码段
mov sp,24h
24h=36
18个dw类型的就已经占了36个字节,所以要调整栈顶。
因为里面已经有了24h个字节的数据了追问

那他dw是什么意思? 为什么要分两次?

追答

看清题目
后面的十个0是当作栈空间用的!
题目给的代码上已经作了注释
前面的dw 是需要改动的数据

温馨提示:内容为网友见解,仅供参考
无其他回答

王爽汇编检测点2.2 的一些疑问: 给定段地址为0001H,仅通多偏移地址寻址...
寻址 = 段地址*16+偏移地址(一个2进制数*2,该二进制数向前移一位,同样8,10,16进制相同)由题:0001H*16+0000H ~ 0001H*16+ffffH 即为:00010H~1000fH

8086汇编,如何判断OF的值(王爽汇编检测点11.2)
首先第一点,10h并没有,90h并没有越界限,你可以看下附页补码部分,90h=144,然后al部分8位,最大值ffh=255,如果是无符号的界限为0-255,如果有符号界限,-128~127,其实内存本身的大小并未改变,改变的只是你主观的判断,内存只是黑你一个可以认为他是负数的选择,所以你的溢出标志位是否溢出,...

王爽汇编检测点10.4的具体分析谁能告诉我下。
在执行了 call ax 的时候 指令寄存器会指向下一条指令的起始地址,也就是 1000:5 inc ax 然后指令寄存器ip=5要压入堆栈 然后跳转到cs:ax指定的地址执行 又因为此时ax中的值为6 ,cs=1000 所以跳转到1000:6执行 于是修改 ip为6 到此时call ax指令才执行完毕 然后就执行 mov bp,sp 因为sp里面放...

C++从入门到进阶的系列书籍推荐
6. 汇编与软件调试书籍掌握一定的汇编语言基础和软件调试技能,对于解决C++程序问题至关重要。6.1 汇编语言(王爽)本书系统讲解汇编语言,为初学者提供循序渐进的学习路径。6.2 IDA Pro权威指南(Chris Eagle)IDA Pro是应用广泛的静态反汇编工具,本书深入讲解其使用方法。6.3 软件调试(张银奎)本书...

码上去学:C++从入门到进阶的系列书籍推荐!
5.2《Linux内核源代码情景分析》:本书采用情景会话教学方法,全面深入剖析Linux核心源代码,对Linux的独特优点和改进点进行评述。在汇编与软件调试方面,推荐以下书籍。6.1《汇编语言》(王爽著):本书是汇编语言学习者的必备宝典,采用全新结构组织内容,深入讲解汇编语言的关键环节。6.2《IDA Pro权威...

8086汇编CPU自动修改IP与执行指令先后的问题
仍然是之后的 第1次,加载mov指令,ip指向下一语句sub,执行赋值 第2次,加载sub指令,ip加载完成后指向下一条jmp语句,执行减 第3次,加载jmp指令,ip加载完成后指向jmp后面的语句,第4次,执行跳转,跳转指令本身会修改ip的值,使ip的值第4次改变 ...

相似回答