问题–编写一个程序来传输一个4字节的块,起始地址为0500,并使用字符串指令在地址0600处传输该块。
例子 –
假设–假设存储器地址0500、0501、0502、0503中有4个块。
算法 –
- 在SI中分配值500在DI中分配值600
- 将值0000 H分配给AX
- 在DS中移动AX的内容
- 在ES中移动AX的内容
- 将值0004 H分配给CX
- 清除方向标记
- 重复直到CX = 0,移动字符串块
- 暂停程序
程序 –
MEMORY ADDRESS | MNEMONICS | COMMENTS |
---|---|---|
0400 | MOV SI, 500 | SI <- 500 |
0403 | MOV DI, 600 | DI <- 600 |
0406 | MOV AX, 0000 | AX <- 0000 |
0409 | MOV DS, AX | DS <- AX |
040B | MOV ES, AX | ES <- AX |
040D | MOV CX, 0004 | CX <- 0004 |
0410 | CLD | CLEAR DIRECTIONAL FLAG |
0411 | REP | REPEAT UNTIL CX=0 |
0412 | MOVSB | MOVE THE BLOCK |
0413 | HLT | END OF THE PROGRAM |
解释 –
- MOV SI,500将500分配给SI
- MOV DI,600将600分配给DI
- MOV AX,00将0000分配给AX寄存器
- MOV DS,AX将AX的内容移至DS段
- MOV ES,AX将AX的内容移至ES段
- MOV CX,0004将0000分配给CX寄存器
- CLD清除方向标记
- 重复REP直到CX = 0
- MOVSB移动字符串块
- HLT停止执行程序。