程序分析 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
展开
 我来答
手机用户13275
推荐于2018-04-09 · TA获得超过146个赞
知道答主
回答量:184
采纳率:0%
帮助的人:139万
展开全部
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一样。如果搞不清楚有符号数和无符号数,还是找本书看吧,那太长了。)
追问
不懂就不要乱装
greendreame
2011-05-04 · 超过17用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:48.1万
展开全部
(1)ax=0001 , bx=ffff
(2)bx=d0ce ,bh=d0 , bl=ce
剩下的我还是告诉你方法把,像这种问题如果自己看不懂程序,都可以用debug运行的,然后你就知道结果了……
进入debug后,用a 命令写入程序段,然后把cs 和ip指向你写程序段的地方,用t 命令执行就可以了,另外说下 执行r命令后 ,ip值后边的是符号标志位的值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式