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寄存器指定

(责任编辑:IT教学网)

更多

推荐CGI/Perl教程文章