作业帮 > 数学 > 作业

我看同学做的和你的不太一样,而且有几个还实在做不出你的答案,能不能帮忙解释下啊,很急~~!

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/08/28 01:26:31
我看同学做的和你的不太一样,而且有几个还实在做不出你的答案,能不能帮忙解释下啊,很急~~!
第一题
.阅读程序,指出结果
MOV SI,2005H
MOV AX,1000H
MOV DS,AX
MOV CL,05H
NEXT:MOV[SI],AL
INC AL
INC SI
DEC CL
JNZ NEXT
INT 3
结果:DS= H, SI= H, AX= H, CL= H
SI为什么等于200A呢,2005H呢?
第四题
设内存31000H~31009H单元内容全为55H,写出如下程序,并指出该程序的功能
MOV AX,300H
MOV DS,AX
MOV ES,AX
CLD
MOV SI,1000H
MOV DI,1050H
MOV CX,OAH
REP MOVSB
INT3
结果为SI=?
DI=?
(31055H)=?
程序功能是?
SI为什么等于000A,而不是100A呢?这一题的程序功能能不能说的通俗易懂点啊,比如说把以.开头的.存到.里面之类的话
第一题、
MOV SI,2005H ;SI先置2005h
MOV AX,1000H
MOV DS,AX ;DS置1000h,则开始的时候 ds:si=1000h:2005h
MOV CL,05H ;计数初值为5
NEXT:MOV[SI],AL
INC AL
INC SI ;;;这里 SI 自加一了,第一次循环,si为 2006h(第一次循环在2005h中存入了al的值,然后自加一,也就是si指向的下一个内存),一共循环环了5次,也就是加了五次,所以最后si为200ah;;;;;;;;;
DEC CL
JNZ NEXT
INT 3
这个程序的功能就是:在1000:2005 --1000:2009 单元中存入 00h--04h
第二题、
SI是100ah 是我写错了(不好意思)
MOVSB.MOVSB 它是把 DS:SI 所指位址的一个位元组搬移到 ES:DI 所指的位址上,搬移后原来的内容不变,但是原来 ES:DI 所指的内容会被覆盖而且在搬移之后 SI 和 DI 会自动地指向下一个要搬移的位址.一般而言,通常程序设计师只搬一个字节,通常都会重复很多次,如果要重复的话,就得把重复次数先存储在 CX 寄存器,并在 MOVSB 之前加上 REP 指令
因为cx的值为 0ah ,所以,搬移次数是10次,搬移十次之后,si为100ah
例如:第一次执行
REP MOVSB
是把ds段中的 3000:1000(即31000h)单元中的值,搬移并且覆盖es 段中 3000:1050单元(即3000:1050单元被赋值55h),然后 si,di都指向下一个要搬移的地址,si指向1001,di指向1051
第二次执行
是把ds段中的 3000:1001(即31001h)单元中的值,搬移并且覆盖es 段中 3000:1051单元(即3000:1051单元被赋值55h),然后 si,di都指向下一个要搬移的地址,si指向1002(即si=1002),di指向1052
第3.4.次都一样
最终 si=100ah ,di=105ah 31050-----31059单元的都被赋值55h
你也可以用emu8086仿真一下
再问: 其实第一题题目 我也打错了,嘿嘿, MOV SI,2500H MOV AX,1000H MOV DS,AX MOV CL,05H NEXT:MOV[SI],AL INC AL INC SI DEC CL JNZ NEXT INT 3 SI就是2505H了, 不过,,还有一题答案不是很理解, 2.若当前(DS)=2000H,(BX)=1000H,21000H=OFFH,21001H=OFFH 程序如下: MOV CL,16 MOV AL,[BX] ROL AL,CL 执行后(AX)=?,(CF)=?. AX我们有人求的是0FFFFH,能不能解释一下呢!万谢~~!!
再答: 你这道题并没有AX原先值,所以AX默认值为0000H MOV CL,16 MOV AL,[BX] ;;这是把ds:[BX] 即 2000:1000里的值赋到al中,得al=0ffh,但ah中值仍为00h;;; ROL AL,CL;;;rol 是不带进位的循环左移,这里一共移动了16次,但只是al头尾之间在移动,并没有移动到ah中 ,所以 ah仍然为 00h,移动后 ,al还是0ffh 所以答案是 00ffh