汇编语言中,MOV是最基本的一种操作。 格式:MOV dest,src 操作:将src的内容移至dest,移动后src的内容仍在,dest的内容被src覆盖。 其规则如下: 1.CS、IP的值不可以作为目标操作数; 2.dest、src不可以同时作为存储器操作数出现; 3.段寄存器不能相互转送; 4.不能把立即数送人段寄存器。 常见错误写法: 1. DATA DB 10H MOV [SI],DATA 解释:[SI]指向的是内存内的数,违反规则2,所以此语句错误。 改正:MOV AX,DATA;MOV [SI],AX 2. MOV CS,AX MOV DS,1000H 解释:见规则1、4。正确写法:MOV AX,CS(虽然这个没有什么实际意义,但是仅说明这种写法是可行的,即把段寄存器的内容传到寄存器里);MOV BX,1000H;MOV DS,BX 3. MOV AX,DL 解释:前后数据类型不匹配,所以不能传送。可以改成MOV AL,DL 4. MOV DATA,AH 解释:DATA的类型没有说明,如果是DB类型,那么这条语句没错,否则前后类型不一致,错误。改正:DATA必须是DB类型。 5. DATA DW 1234H MOV DATA,WORD PTR AH 解释:PTR无法对寄存器进行操作。改正:MOV BYTE PTR DATA,AH。举例说AH的值是00H,操作完成后,内存中的数应该是00H 12H。 6. MOV [SI],10H 解释:MOV不可以把立即数送入内存中。改正:MOV AH,10H MOV BYTE PTR[SI],AH。
总结一下:MOV命令的书写必须遵守开始列出的四条规则,除此之外注意操作类型需要一致。
|