程序分析 1.执行下列程序段后,AX= ,BX= MOV AX,0FFFFH MOV BX,-1 IMUL BX 2.已知BX=3131H,CX=0F0F0
程序分析1.执行下列程序段后,AX=,BX=MOVAX,0FFFFHMOVBX,-1IMULBX2.已知BX=3131H,CX=0F0F0HANDBH,CHNOTBLNE...
程序分析
1.执行下列程序段后,AX= ,BX=
MOV AX,0FFFFH
MOV BX,-1
IMUL BX
2.已知BX=3131H,CX=0F0F0H
AND BH,CH
NOT BL
NEG BH
执行上述指令序列后,BH= ,BL= 。
3.源程序如下:
CMP CL,DL
JNC L1
JZ L2
JNO L3
JMP L4
若CL=64H,DL=64H,则程序最后将转到哪个标号处执行?标志位CF、ZF、OF分别
是多少?
4.源程序如下:
DAT DB 23H,79H,86H,61H,42H
……
LEA DI, BUF
CLD
MOV CX,5
MOV AL,‘A’
REP STOSB
该程序完成的功能是什么?该程序段执行后,BUF中的内容是 ,
方向标志DF= 。
5.执行下列程序段后,AX= ,DX=
MOV CL,4
MOV DX,248AH
MOV AX,8103H
ROL DX,CL
SHR AX,CL
6.执行下列程序段到HLT时,AL= ,BL= 。
MOV AL,20H
TEST AL,01H
JNZ D1
MOV BL,00H
JMP D2
D1: MOV BL,1
D2: HLT 展开
1.执行下列程序段后,AX= ,BX=
MOV AX,0FFFFH
MOV BX,-1
IMUL BX
2.已知BX=3131H,CX=0F0F0H
AND BH,CH
NOT BL
NEG BH
执行上述指令序列后,BH= ,BL= 。
3.源程序如下:
CMP CL,DL
JNC L1
JZ L2
JNO L3
JMP L4
若CL=64H,DL=64H,则程序最后将转到哪个标号处执行?标志位CF、ZF、OF分别
是多少?
4.源程序如下:
DAT DB 23H,79H,86H,61H,42H
……
LEA DI, BUF
CLD
MOV CX,5
MOV AL,‘A’
REP STOSB
该程序完成的功能是什么?该程序段执行后,BUF中的内容是 ,
方向标志DF= 。
5.执行下列程序段后,AX= ,DX=
MOV CL,4
MOV DX,248AH
MOV AX,8103H
ROL DX,CL
SHR AX,CL
6.执行下列程序段到HLT时,AL= ,BL= 。
MOV AL,20H
TEST AL,01H
JNZ D1
MOV BL,00H
JMP D2
D1: MOV BL,1
D2: HLT 展开
2个回答
展开全部
1)X定义是字类型,就是说有16位
Y定义字节类型,就是说有8位
AX和AL其实是同一个寄存器,AX表示完整16位寄存器,而AL表示AX寄存器的低8位,所以AL只有8位。
X是16位的,自然不能放到8位寄存器中,所以MOV AL,X是错的;
MOV AL,Y没有语法错误,8位数据自然可以放进16位寄存器,只是一般不怎么用。
2)你只做DS里数据变成CS,CS并没有变。按照你的方法你可以这样
MOV AX,CS
MOV BX,DS
MOV DS,AX
MOV CS,BX
当然你也可以直接交换,用交换指令
MOV AX,CS
MOV BX,DS
XCHG AX,BX
3)MUL BL ;AX=AL*BL=0FFH(255)*01H(1)=255
(你可以去看一下MUL指令的解释。MUL 源
当源操作数为字节时,它与累加器AL中内容相乘为16位数,放在AX中;即
AX=AL*源
当源错做数为字时,它与累加器AX中内容想盛为32为数,放在(DX,AX)中
DX为高16位,AX为低16位;即(DX,AX)=AX*源)
IMUL BL;AX=AL*BL=0FFH(11111111B)*01H(00000001B)
=0FF01H(11111111 00000001B)=-1
(IMUL表示有符号数相乘,其他和MUL一样。如果搞不清楚有符号数和无符号数,还是找本书看吧,那太长了。)
Y定义字节类型,就是说有8位
AX和AL其实是同一个寄存器,AX表示完整16位寄存器,而AL表示AX寄存器的低8位,所以AL只有8位。
X是16位的,自然不能放到8位寄存器中,所以MOV AL,X是错的;
MOV AL,Y没有语法错误,8位数据自然可以放进16位寄存器,只是一般不怎么用。
2)你只做DS里数据变成CS,CS并没有变。按照你的方法你可以这样
MOV AX,CS
MOV BX,DS
MOV DS,AX
MOV CS,BX
当然你也可以直接交换,用交换指令
MOV AX,CS
MOV BX,DS
XCHG AX,BX
3)MUL BL ;AX=AL*BL=0FFH(255)*01H(1)=255
(你可以去看一下MUL指令的解释。MUL 源
当源操作数为字节时,它与累加器AL中内容相乘为16位数,放在AX中;即
AX=AL*源
当源错做数为字时,它与累加器AX中内容想盛为32为数,放在(DX,AX)中
DX为高16位,AX为低16位;即(DX,AX)=AX*源)
IMUL BL;AX=AL*BL=0FFH(11111111B)*01H(00000001B)
=0FF01H(11111111 00000001B)=-1
(IMUL表示有符号数相乘,其他和MUL一样。如果搞不清楚有符号数和无符号数,还是找本书看吧,那太长了。)
追问
不懂就不要乱装
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询