汇编

书上的实验4
题目:向内存 0:200-0:23F依次传送数据0-63(3FH),程序中只能使用9条指令,9条指令包括“mov ax,4c00h”和“int 21h”
第一代(严格上是有错误的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
assume cs:codesg
codesg segment
mov cx,0040h
mov ax,0020h
mov ds,ax
mov bx,0
s: mov [bx],bx
inc bx
loop s
mov ax,4c00H
int 21H
codesg ends

end

正确的应该是把
mov [bx],bx 改成
mov [bx],bl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
assume cs:codesg
codesg segment
mov cx,0040h
mov ax,0020h
mov ds,ax
mov bx,0
s: mov [bx],bl
inc bx
loop s
mov ax,4c00H
int 21H
codesg ends

end

当然不是做题目,没必要这样省代码,直接用两个寄存器分别表示自增的数字和自增的内存单元地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
assume cs:codesg
codesg segment
mov cx,0040h
mov ax,0020h
mov ds,ax
mov bx,0
mov ax,0
s: mov [bx],ax
inc bx
inc ax
loop s
mov ax,4c00H
int 21H
codesg ends

end