鱼C论坛

 找回密码
 立即注册
查看: 2993|回复: 11

第五章LOOP的时候我编了个汇编程序,谁能解释下,错在哪啊~

[复制链接]
发表于 2012-3-16 12:58:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不会编汇编 于 2012-3-17 13:34 编辑

其实程序很简单,就是把FFFF:0~FFFF:B的数据以字型累加到DX中

assume cs:code

code segment

start:        mov ax,0ffffh
        mov ss,ax
        mov sp,0
        mov ax,0
        mov dx,0
        mov cx,6h
s:        pop ax
        add dx,ax   ;DEBUG单步执行到这里就会显示Program terminated normally百思不得其解
        loop s
               
        mov ax,4c00h
        int 21h

code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-16 14:13:23 | 显示全部楼层
assume cs:code
code segment
strat:        mov ax,0ffffh
                mov ds,ax
                mov ax,0
                mov bx,0
                mov cx,5
        s:        add dx,ds:[bx]
                inc bx
                inc bx
                loop s
                mov ax,4c00h
                int 21h
code ends
end strat               

看看符合你的要求不,代码经过DEBUG测试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-16 14:14:25 | 显示全部楼层
:(不是你想要的请PM我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-16 14:30:38 | 显示全部楼层
本帖最后由 G0398 于 2012-3-16 14:31 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-16 14:38:43 | 显示全部楼层

我也编出了你那段代码,就是不明白为什么 用出栈就不行了。。就是用POP把 FFFF里的数据先出栈到AX中,然后AX的数据加上DX。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-16 14:50:56 | 显示全部楼层
本帖最后由 yezlei 于 2012-3-16 14:57 编辑

assume cs:code

code segment

start: mov ax,0ffffh
         mov ss,ax
         mov sp,000EH  ;问题出在栈的偏移上,你忽略了这个,你给SS栈段赋值后,直接POP 取值,需要把SP指向栈顶
         mov ax,0
         mov dx,0
         mov cx,6h;这里循环了7次,0-6一共7次,所以SP指向应该是2*7=14=000EH
s:      pop ax
         add dx,ax   
         loop s
                 
         mov ax,4c00h
         int 21h

code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-16 14:56:06 | 显示全部楼层
{:1_1:}我也是初学,哪里说的不对的对方请指正,互相学习进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-17 00:31:20 | 显示全部楼层
我昨天才接触这个!! 现在还不懂!! 我会加油的!!你也是哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-17 03:28:43 | 显示全部楼层
Fan.晓娅 发表于 2012-3-17 00:31
我昨天才接触这个!! 现在还不懂!! 我会加油的!!你也是哦

晓娅看来是个热心的学习者啊!(⊙o⊙)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-17 11:22:35 | 显示全部楼层
:D你的是       mov ax,0ffffh
        mov ss,ax
        mov sp,0
sp指针貌似给错地址了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-17 13:31:07 | 显示全部楼层
Root`s_Dream 发表于 2012-3-17 11:22
你的是       mov ax,0ffffh
        mov ss,ax
        mov sp,0

你想啊,是从FFFFH 的第一个数开始往外POP 也就是SP,0 然后 POP出一个数据POP+2,以此类推,一直到B呀~你觉得内~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-17 13:34:07 | 显示全部楼层
Root`s_Dream 发表于 2012-3-17 11:22
你的是       mov ax,0ffffh
        mov ss,ax
        mov sp,0

我好像大概明白了, 应该是因为这段内存虽说设置成为了一段SS。 可是如果没有往里边PUSH东西的话它不会往外POP东西。所以,这个程序不对吧~ 应该是这样{:2_33:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 22:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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