|
主题 : : 各位帮忙看看 实验4 [BX]和LOOP的使用 第一题, 对不对? [待解决] |
回复[ 10次 ]
点击[ 722次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-01-03 19:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-11-24 09:39 |
题目: 编程,向内存0:200-0:23f一次传送数据0~63(3fh)
我的回答
assume cs:date
date segment
mov ax,200h
mov ds,ax
mov bx,0
mov cx,64
s: mov [bx],bl
inc bx
loop s
mov ax,4c00h
int 21h
date ends
end | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-01-03 22:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
debug一下, 不就知道啦~~~
PS:文件头两行, 最后这样写好点吧
assume cs:code
code segment | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-01-05 19:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-03 08:56 |
|
|
|
|
|
[第3楼]
[ 回复时间:2010-01-07 18:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-07-26 14:14 |
借问一下,我把楼主的程序改了,就是交换了一下ax和bx的位置,结果汇编时出错
程序如下:
assume cs:code
code segment
mov ax, 0
mov cx, 64
mov bx, 200h
mov ds, bx
s: mov [ax], al
inc ax
loop s
mov 4c00h
int 21
code ends
end
用masm5.1在虚拟机下的纯Dos环境里汇编结果如下:
sy4gb.asm(8):error A2048: Must be index or base register
51678 + 417586 Bytes symbol space free
0 Warning Errors
1 Severe Errors
请问向ds里传数据必须用ax寄存器吗,用bx不行?谢谢! | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-01-07 18:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-07-26 14:14 |
|
|
|
|
|
[第5楼]
[ 回复时间:2010-01-07 18:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
第一。BX是一个寻址寄存器,也是一个通用寄存器, 但是如果这样用[BX]的时候, 其他三种寄存器就不具备寻址的作用了。就跟AX一样, 他具有累加功能, 故也成之为累加器。CX叫计数器, 各有各的功能吧
第二,你文件倒数第三行第四行输入有误。
笨人初学, 还望高手指点。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-01-07 19:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
向DS里传送数据AXBXCXDX都可以, 但是只有[BX]可以将SA:EA处的数据传送给目标寄存器。
用debug实验啦, 只有BX可以 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-01-07 21:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-07-26 14:14 |
谢谢regex!原来四个通用寄存器不是完全一样的。多谢了! | | |
|
|
|
|
[第8楼]
[ 回复时间:2010-01-25 21:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:2
注册日期:2010-01-04 23:00 |
很感谢regex的讲解,我也很纳闷为什么只有bx可以,多谢啦。
另外,弱弱的问一句3楼,纯dos虚拟环境怎么玩? | | |
|
|
|
|
[第9楼]
[ 回复时间:2010-01-31 18:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-23 17:53 |
楼上真强,我只会 最菜鸟的写法,
assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200h
mov cx,64
mov dl,0
s:mov ds:[bx],dl
inc bx 自变的地址
inc dl 自变的数
loop s
mov ax,4c00h
int 21h
code ends
end
一个自变的数,放到一个自变的地址中。我用了dl,跟bx,没想到用bl,其实bx自变,跟着bl也变,哎,多此一举。。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2010-02-01 00:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
D:\ASM>debug
-a
146D:0100 mov ax,0
146D:0103 mov ds,ax
146D:0105 mov bx,200
146D:0108 mov al,0
146D:010A mov cx,40
146D:010D mov [bx],al
146D:010F inc al
146D:0111 inc bx
146D:0112 loop 10d
146D:0114
-d 0:200 23f
0000:0200 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0000:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-g 114
AX=0040 BX=0240 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0000 ES=146D SS=146D CS=146D IP=0114 NV UP EI PL NZ AC PO NC
146D:0114 9A007511E8 CALL E811:7500
-d ds:200 23f
0000:0200 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F ................
0000:0210 10 11 12 13 14 15 16 17-18 19 1A 1B 1C 1D 1E 1F ................
0000:0220 20 21 22 23 24 25 26 27-28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
0000:0230 30 31 32 33 34 35 36 37-38 39 3A 3B 3C 3D 3E 3F 0123456789:;<=>?
-q
D:\ASM> | | |