|
主题 : : 求助各位朋友帮忙看下哪里错了 [已解决] |
回复[ 5次 ]
点击[ 307次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-08-11 18:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-08-11 18:20 |
ASSUME CS:CODE
CODE SEGMENT
MOV AX,0FFFFH
MOV DS,AX ;设置段地址
MOV AX,6
MOV [6],AX ; 给 FFFF:6赋值
MOV BX,[6] ; 将刚才的值传到BX
MOV CX,2 ; 循环次数
F:ADD BX,BX ;累加
LOOP F
MOV AX,4C00H
INT 21H
CODE ENDS
END
编译的时候出错,但是我检查不出错误来 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-08-11 20:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
1,FFFFH地址是不让写入
2,mov [6],ax ;因为没有声明数据段,所以应改成: mov ds:[6],ax | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-08-11 20:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2010-08-11 20:09 |
MOV AX 0FFFFH ;是把0FFFF地址内的内容送给AX
你的本意应该是:MOV AX #0FFFFH 吧,所以你的程序应该是如下:
ASSUME CS:CODE
CODE SEGMENT
MOV AX,#0FFFFH
MOV DS,AX ;设置段地址
MOV AX,#0006H
MOV [0006H],AX ; 给 FFFF:6赋值
MOV BX,[0006H] ; 将刚才的值传到BX
MOV CX,#0002H ; 循环次数
F:ADD BX,BX ;累加
LOOP F
MOV AX,4C00H
INT 21H
CODE ENDS
END | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-08-11 20:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-08-11 18:20 |
为什么 在段地址前面加上#还有就是 我已经设置了 DS的值了 MOV DS,AX;为什么还要在
mov [6],ax 这里改成 mov ds:[6],ax (我试过了 这个是正确的) | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-08-11 21:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-08-11 18:20 |
我知道为什么错了 因为 DEBUG 理解 mov ax,[0] ;将 DS:0 里面的数据放到 ax
而 masm汇编编译器 理解为 将 0放到 ax 所以 以上代码错误! | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-08-11 21:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-08-11 18:20 |
此贴由 贴主 于 [ 2010-08-11 21:38 ] 结贴。 结贴原因:问题已解决 | | |