|
主题 : : 实验4 第1小题 为什么我做的根本不能通过编译呢? [待解决] |
回复[ 10次 ]
点击[ 592次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-01-12 17:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:1
信誉值:6
注册日期:2007-11-14 11:28 |
几经修改,那一行始终有错
assume cs:codesg
codesg segment
mov ax,20h
mov ds,ax
mov ax,0
mov cx,0
mov cx,3fh
s: mov [ax],bx(就这里过不了)
inc ax
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end
那一行是那里错了呢?我把bx的内容传送个ds:ax里面,ds是20H,ax是0就等于把bx的内容传送给了20:0单元内有错吗? | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-01-12 18:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2008-12-16 19:25 |
[bx]代表的不是[寄存器]
[bx]代表的就是[bx],暂时来说只有bx寄存器支持这种当作偏移地址的引用
所以[ax]不是有效的 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-01-25 13:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:0
注册日期:2009-01-25 01:37 |
|
|
|
|
|
[第3楼]
[ 回复时间:2009-01-25 13:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:0
注册日期:2009-01-25 01:37 |
几经修改,那一行始终有错
assume cs:codesg
codesg segment
mov ax,20h
mov ds,ax
mov ax,0
mov cx,0
mov cx,3fh
s: mov [ax],bx(就这里过不了)
inc ax
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end
那一行是那里错了呢?我把bx的内容传送个ds:ax里面,ds是20H,ax是0就等于把bx的内容传送给了20:0单元内有错吗?
------------------
回复:1.为什么要mov cx,0 然后mov cx,3fh 是不是写错了,应该是mov bx,0 然后mov cx,3fh
2.bx为16位寄存器,题目的意思是1个内存单元存1个数据,所以用8位的bl,不要用bx,虽然bx高位为0,下一个字单元的低8位可以将上一个字单元多出来的高8位覆盖,但是不符合题意。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-01-29 15:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41 |
回复:[贴 主]
------------------
其他的现不说,mov cx,3fh 肯定错
应该写成 mov cx,40h ,64个数嘛~ | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-01-29 15:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41 |
回复:[贴 主]
------------------
贴一个我写的:
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,40h
s:mov ds:[bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-03-05 12:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-01-04 17:25 |
回复:[贴 主]
------------------
贴一个我写的:
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,40h
s:mov ds:[bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
------------------
回复:bx是十六位寄存器,mov ds:[bx],bx这一句应该改成mov [bx],bl,这样按字节逐个填进去才正好是64个。如果不改,那就是按字填进去,一次填两个字节。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2009-06-07 13:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-29 14:22 |
assume cs:a
a segment
start: mov ax,0020h
mov ds,ax
mov bx,0
mov dx,0
mov cx,63
mov ax,0
xh: mov dx,ax
mov ds:[bx],dx
inc ax
inc bx
loop xh
mov ax,4c00h
int 21h
a ends
end
我也来一个自己写的 呵呵 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-06-07 13:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-29 14:22 |
assume cs:a
a segment
start: mov ax,0020h
mov ds,ax
mov bx,0
mov dx,0
mov cx,64
mov ax,0
xh: mov dx,ax
mov ds:[bx],dx
inc ax
inc bx
loop xh
mov ax,4c00h
int 21h
a ends
end
粘错了 ,这个才是对的,嘿嘿 不好意思啊!!! | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-06-25 11:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-06-09 13:56 |
以上几楼我不敢去说谁对谁错,可是下面的程序想应该是对的,
我在masm里面已经试过了,而且可以通过,希望大家指教!
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,64
s:mov ds:[bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end | | |
|
|
|
|
[第10楼]
[ 回复时间:2009-06-28 09:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-10 10:09 |
mov ax,0020h
mov ds,ax
这个是什么意思?
为什么ds的值是0020h而不是0?? | | |