汇编高手来。。。。

来源:百度知道 编辑:UC知道 时间:2024/09/22 21:32:08
判断,说明错误原因

1、MOV SI,24H
2、JMP CX
3/MOV AL,DX
4/MOV 4567H,AX
5/POP PSW
6/SUB [BP-1000],AL
7/DIV AL,BL
8/XOR BX,[2356H]
9/XCHG CS,DS
10/MUL 16
11/MOV AX,0
12/MOV [1000H],1000H
13/MOV BL,AX
14/MOV [0],AX
15/PUSH PSW
16/SHR DX,BL
17/MUL AL,BL
18/AND AX,[1000]
19/XCHG CS,DS
20/LEA AL,[BX]
以上是题目!好的还好会加分!

1、MOV SI,24H; 正确
2、JMP CX;正确
3、MOV AL,DX ;错误,类型不匹配。AL为8位,DX为16位
4、MOV 4567H,AX ;错误,立即数不能作为目的操作数
5、POP PSW;错误,程序状态字PSW不能作为操作数使用
6、SUB [BP-1000],AL;不严格说算正确,如果严格说,应该指定内存单元的数据类型,应该写成SUB BYTE PTR [BP-1000],AL
7、DIV AL,BL;错误,指令格式错误。应该写成DIV BL
8、XOR BX,[2356H];不严格说算正确,如果严格说,应该指定内存单元的数据类型,应该写成XOR BX,WORD PTR [2356H]
9、XCHG CS,DS;错误,CS不能作为目的操作数,两个段寄存器不能交换数据
10、MUL 16 ;错误,指令格式错误。乘法指令中的操作数不能为立即数
11、MOV AX,0;正确
12、MOV [1000H],1000H ;不严格说算正确,如果严格说,应该指定内存单元的数据类型,应该写成MOV WORD PTR [1000H],1000H
13、MOV BL,AX ;错误,类型不匹配。BL为8位,AX为16位
14、MOV [0],AX];不严格说算正确,如果严格说,应该指定内存单元的数据类型,应该写成MOV WORD PTR [0],AX]
15、PUSH PSW;错误,程序状态字PSW不能作为操作数使用
16、SHR DX,BL;错误,指令格式错误。当移位次数不为1时用CL表示,应该写成SHR DX,CL
17、MUL AL,BL;错误,指令格式错误。应该写成MUL BL
18、AND AX,[1000];不严格说算正确,如果严格说,应该指定内存单元的数据类型,应该写成AND AX,WORD PTR [1000]
19、XCHG CS,DS ;错误,CS不能作为目的操作数,两个段寄存器不能交换数据
20、LEA AL,[BX];错误,用LEA取出内存的有效地址为16位,不能送8位寄存器AL中

16位单片机没