鱼C论坛

 找回密码
 立即注册
查看: 3416|回复: 3

关于实验9,我到底哪里错了?求助!更新了新写的第二段代码还是不行!!!

[复制链接]
发表于 2011-6-28 15:47:48 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xxasy 于 2011-6-30 08:34 编辑
assume cs:code,ds:data

data segment 
db'welcome to masm! ','2h,24h,71h',0,0
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov di,0
mov si,0
mov bx,0
mov ax,data
mov ss,ax
mov sp,0
add sp,22
mov cx,3
s: push cx
mov cx,16
s1: mov al,byte ptr ds:[si]
mov ah,byte ptr ds:[di+16]
mov es:[bx],ax
add bx,2
inc si
loop s1
inc di
add bx,128
pop cx
loop s
mov ax,4c00h
int 21h
code ends
end start
我到底哪里错了?为什么debug看不到字体的颜色什么的?
我又从新写了一遍。。编译通过,可以运行。单步调试。被机器给踢出来了。貌似动了微软的奶酪了。到底怎么个情况啊。。
assume cs:code,ds:data,cs:stack

data segment
db'welcome to masm!'
db'02h,24h,71h'
data ends

stack segment
dw 8 dup (0)
stack ends

code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov di,0
mov ax,0b872h
mov cx,3


s: push cx 
push ax
mov bx,0
mov si,0
mov es,ax
mov cx,16
s1: mov dl,ds:[si]
mov dh,ds:[di+16]
mov es:[bx],dx
inc si
add bx,2
loop s1
pop ax
add di,1
add ax,0Ah
pop cx
loop s1 
mov ax,4c00h
int 21h
code ends
end start
谢谢大家。
在cmd中运行后的结果.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-28 22:20:41 | 显示全部楼层
楼主 我想是第22行那吧  你怎么能用[si+16]呢  这样的话 当你第二次循环得到的就是24   第三次就是71  第四次就是0  然后又是0   接着就无法预测了、、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 23:02:40 | 显示全部楼层
循环逻辑上出现错误,我也是第一次回答,回答不好请见谅!
显示颜色地址的变量只需要增加3次,你放入了s1的循环中,你看下你cx的值为16,16的循环是索引字母的,不能和颜色变量放在一起!{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-30 01:17:11 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-6-30 01:20 编辑

loop s1

pop ax

add di,1

add ax,0Ah

pop cx

loop s1
第2个loop 跳到s 不是 s1
你的代码可以优化一下,把es不加到循环试试,可以省去push ax了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 01:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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