(1) 编程,向内存0:200~0:23F依次传送数据0~63(3FH)
assume cs:code
code segment
mov ax,0020H
mov ds,ax
mov dl,0
mov bx,0
mov cx,40h ;这里为什么不是3F呢,因为3F-3F就等于0,loop就停止了。
s: mov [bx],dl
inc bx
inc dl
loop s
mov ax,4c00H
int 21h
code ends
end
(2) 编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h 和 int 21h”.
assume cs:code
code segment
mov ax,0020H
mov ds,ax
mov bx,0
mov cx,40h ;这里为什么不是3F呢,因为3F-3F就等于0,loop就停止了。
s: mov [bx],bl ;这里只能用低8位。
inc bx
loop s
mov ax,4c00H
int 21h
code ends
end
(3) 下面的程序的功能是将,‘mov ax,4c00h’之前的指令复制到内存0:200处,补全下程序,上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,0016h ;通过DEBUG跟踪所得,但我想有更简单的方法。
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
1、复制的是数据,从CS指令寄存器,到0:200的地址空间。
2、复制的是数据,有22个字节,通过DEBUG跟踪得来,但我想有其它更简单的方法,只是现在不知道,有高手望指点一下。
- [chinatree] 对于双重循环取决于LOOP的位置?怎么说呢? 09/29 15:27
- [rotapple] 哦。是edit啊。晕。我以为这个UI界面是你写出来的。 08/25 18:32
- [rotapple] 这是什么书来的?第四章有这东西吗? 我怎么没见过。 08/25 18:30
- [rotapple] 发多张图是这样的。 你先要把图传到某个地方,比如百度空间。 然后再用[img]地址[/img]这 08/25 18:29
- [rotapple] ;这里为什么不是3F呢,因为3F-3F就等于0,loop就停止了。 你问了好多这个。 0-63 08/25 18:25
- [chinatree] 哪个题呀? 08/25 17:29
- [ameteur] 我试着用mov cx,[5],第一次程序可以成功执行,第二次就不行了。 08/25 17:07
- [ameteur] 我知道,但有一个问题,它是从mov ax,4c00H 前的复制,而不是整个,我可以用 sub cx, 08/25 17:05
- [chinatree] 第一个不用dl试试。 第二个可以不用 mov cx,0016h ,因为当程序加载好cx保存的就是 08/23 18:18
- [chinatree] 在多少页呀,起码最上一行和最下一行我就不知道怎么显示的 08/18 11:51
- [scuzg] 我是scuzg,QQ号是914933602,有空联络、讨论哈! 10/10 22:45
[ chinatree 发表于 2011-08-23 18:18 ]
第一个不用dl试试。
第二个可以不用 mov cx,0016h ,因为当程序加载好cx保存的就是程序的长度。
[ ameteur 发表于 2011-08-25 17:05 ]
我知道,但有一个问题,它是从mov ax,4c00H 前的复制,而不是整个,我可以用 sub cx,5 ,但这里没有SUB啊。
[ ameteur 发表于 2011-08-25 17:07 ]
我试着用mov cx,[5],第一次程序可以成功执行,第二次就不行了。
[ chinatree 发表于 2011-08-25 17:29 ]
哪个题呀?
[ rotapple 发表于 2011-08-25 18:25 ]
;这里为什么不是3F呢,因为3F-3F就等于0,loop就停止了。
你问了好多这个。
0-63不就是64个数嘛,64个不就是40h嘛。
第2点你现在只能用debug得出,在后面的章节会有便捷的计算方法。所以往后面学吧。加油。