鱼C论坛

 找回密码
 立即注册
查看: 2532|回复: 10

请教大家汇编语言第七章的问题

[复制链接]
发表于 2012-6-29 21:21:50 | 显示全部楼层 |阅读模式
1鱼币
assume cs:codesg,ds:datasg,ss:stacksg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. dispalay.....'
db '2. brows........'
db '3. replace......'
db '4. modify.......'
datasg ends
codesg segment
start: mov ax,stacksg
  mov ss,ax
  mov sp,16
  mov ax,datasg
  mov ds,ax
  mov bx,0
  mov cx,4
  s0: push cx
   mov si,0
   mov cx,4
   s: mov al,[bx+3+si]
    and al,11011111b
    mov [bx+3+si],al
    inc si
    loop s
   add bx,16
   pop cx
   loop s0
  mov ax,4c00h
  int 21h
codesg ends
ends start

问题是:
1.为什么mov sp,16,sp为什么是16?
2.如果是16的话,那么db的数据是stacksg:0000 1 .   d i s p a l a y . . . . .
                                                   stacksg:0010 2 .   b r o w s . . . . . . . .
                                                   stacksg:0020 3 .   r e p l a c e .  . . . . .
                                                   stacksg:0030 4 .   m o d i f y . . .  . . . .
我这样理解是否有错?
3.我一开始理解得是SP=0
                               BX=16

最佳答案

查看完整内容

stacksg segment dw 0,0,0,0,0,0,0,0 stacksg ends 这里,你先把SS与stacksg段挂钩了,而你stacksg段定义了16字节,所以你栈顶你要指向16d(十进制的16)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-29 21:21:51 | 显示全部楼层
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
这里,你先把SS与stacksg段挂钩了,而你stacksg段定义了16字节,所以你栈顶你要指向16d(十进制的16)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-29 23:26:40 | 显示全部楼层
第2个问你理解得没错,第3个问我只能说sp是与栈段ss相关的,而bx是通用寄存器,可以用作寻址和存储用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 00:25:32 | 显示全部楼层
学习,学习,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 01:17:24 | 显示全部楼层
栈空间的最小值是不是16个字节啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 01:29:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 02:01:27 | 显示全部楼层
Yara 发表于 2012-6-29 21:21
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends

16个字节 是10H吧  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 07:09:32 | 显示全部楼层
我怎么感觉不太对呢

stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends

dw = dword = 4byte
dw 0,0,0,0,0,0,0,0  这条伪指令不是应该申请了 32个字节的空间吗
十进制32 = 十六进制20h
我感觉这道题本身就有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 07:17:15 | 显示全部楼层
哦 不对 是我理解多了
dw 不是 dword 的意思
Sorry!

继续维持原判
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 10:44:33 | 显示全部楼层
会游泳的猫 发表于 2012-6-30 01:17
栈空间的最小值是不是16个字节啊?

这里栈空间的大小是你自己定义的stacksg段,没有说特定是10H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-6-30 13:13:29 | 显示全部楼层
定义的栈空间是用来存放cx的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 06:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表