pushCL指令对吗,push操作
http://www.itjxue.com 2023-01-07 09:08 来源:未知 点击次数:
MOV DX , AL ; PUSH CL ; XCHG BL,AX ; OUT DX,AL ; LEA DX,2218H ; MOVES,1238H 对吗 不对的话咋改
1.MOV DX , AL ;错,DX,十六位寄存器,AL八位寄存器,不能把八位寄存器数据传给十六位寄存器
2.PUSH CL ;错,PUSH压栈指令只能压十六位寄存器,如 PUSH CX
3.XCHG BL,AX ;错误同(1),只能同等位的寄存器交换,如:xchg al,bl;xchg bx,ax
4.OUT DX,AL ;对,DX是端口号,I/O指令是八位,端口号是十六位的
5.LEA DX,2218H ; 错,这里不能用立即数(2218H),应为偏移地址
6.MOVES,1238H ;错,ES段寄存器,不能传送立即数
汇编指令的对错
push cs √ 压栈的需是字
add cl,1000 × ;1000大于一个字节
sub ax,bl × ;AX为字,BL是字节,类型不匹配
;以下几条,经DEBUG验证正确.
mov [di],si √
mov [di],ax √
mov bl,[si+2] √
多说一句,下面指令也是错的!
sub ax,word ptr bl
指出下列8086指令中的错误
MOV CS,BX ;代码段寄存器不能作为目的操作数
mov bl,1234h ;操作数类型不匹配,bl是字节类型,1234h是字类型
mov ss,ds ;两个操作数不能同为段寄存器
mov 2000h,cx ;立即数不能作目的操作数
pop ip ;不能直接对指令指针寄存器操作
sub [si],[DI] ;两个操作数不能同为存储单元
push cl ;入栈、出栈的操作数必须是字类型
xchg [di],2000h ;xchg指令不允许立即数作操作数
add cx,cs ;不允许段寄存器参与算数、逻辑运算
in al,6aoch ;字类型的段口号必须以DX寄存器指定