鱼C论坛

 找回密码
 立即注册
查看: 1771|回复: 8

汇编问题 求大神求助

[复制链接]
发表于 2013-9-30 21:29:51 | 显示全部楼层 |阅读模式

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

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

x
data segment
x db 01,02
y db ?,?
z db ?,?
w dw 1234h
data ends
code segment
main proc far
assume cs:code,ds:data
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax

mov dx,1234h

mov cl,ds:[0000h]

mov si,0000h
mov di,0002h
mov al,[si]
mov [di],al
add si,1
add di,1
mov al,[si]
mov [di],al

mov si,0000h
mov di,0000h
mov al,x[si]
mov y[di],al
add si,1
add di,1
mov al,x[si]
mov y[di],al

mov si,0000h
mov di,0000h
mov bx,0000h
mov bp,0004h
mov al,[bx][si]
mov ds:[bp][di],al
add si,1
add di,1
mov al,[bx][si]
mov ds:[bp][di],al

ret
main endp
code ends
end




以上是程序代码  
我在运行的时候不能用情况如下:
汇编.jpg

文件

文件

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-30 21:30:23 | 显示全部楼层
自己先顶个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-1 00:09:40 | 显示全部楼层
Win 7 ?
建议你用VM虚拟机安装XP
我这边程序直接ML 成功debug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-1 14:59:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-1 15:50:57 | 显示全部楼层
zoe琦 发表于 2013-10-1 14:59
恩  是WIN7的   但是我不知道什么事ML?VM的虚拟机 也不懂

win7 或许不兼容吧,我用 VMware 虚拟机安装 XP 系统。
用 XP 系统来调试,很方便的
网上搜索 VMware 虚拟机用来调试程序,不用怕程序死循环卡电脑

ml 就是 masm 和 link 一起做的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-1 20:44:06 | 显示全部楼层
那个,这位朋友你的这段程序里面的有些代码有可能不符合80x86的代码要求,这样,我给你把这段代码略微的改了一下,编译的时候也没问题。下面就是改后的代码和编译的情况:
assume cs:code,ds:data
data segment    ;定义数据段
x db 01,02,0
y db ?,?,0
z db ?,?,0
w dw 1234h,0
data ends      ;数据段结束
code segment    ;声明代码段
start:       ;程序入口处
push ds        ;ds入栈
xor ax,ax      ;ax清零
push ax      ;ax入栈
mov ax,data    ;把data段的地址放到ax里面
mov ds,ax     ;把ax放到ds里面,也就是data和ds挂钩
mov dx,1234h    ;把此数据放到dx里面
mov cl,ds:[0000h]    ;把数据段的偏移地址为0的内容放到cl里面
mov si,0000h    ;把此数据放到si里面
mov di,0002h    ;把此数据放到di里面
mov al,[si]     ;将si的内容放到al里面
mov [di],al     
add si,1      ;si自身加1
add di,1
mov al,[si]   
mov [di],al
mov si,0000h
mov di,0000h
mov al,x[si]
mov y[di],al
add si,1
add di,1
mov al,x[si]
mov y[di],al
mov si,0000h
mov di,0000h
mov bx,0000h
mov bp,0004h
mov al,[bx][si]
mov ds:[bp][di],al
add si,1
add di,1
mov al,[bx][si]
mov ds:[bp][di],al
ret
mov ah,0    ;调用dos21号中断的0号功能
int 21h
code ends
end  start



编译情况

编译情况






想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-2 09:44:34 | 显示全部楼层
青玄 发表于 2013-10-1 20:44
那个,这位朋友你的这段程序里面的有些代码有可能不符合80x86的代码要求,这样,我给你把这段代码略微的改了 ...

谢谢哈   但是我的还是不行  我用的系统是WIN7 32位  的  可能不兼容吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-2 13:03:25 | 显示全部楼层
赚金币来了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-2 13:27:05 | 显示全部楼层
过来学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 09:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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