早教吧 育儿知识 作业答案 考试题库 百科 知识分享

计算ffff:0006单元中的数乘以3,结果存在dx中运算后的结果是否会超出dx所能存储的范围计算ffff:0006单元中的数乘以3,结果存在dx中运算后的结果是否会超出dx所能存储的范围为什么呢

题目详情
计算ffff:0006单元中的数乘以3,结果存在dx中
运算后的结果是否会超出dx所能存储的范围
计算ffff:0006单元中的数乘以3,结果存在dx中
运算后的结果是否会超出dx所能存储的范围
为什么呢
▼优质解答
答案和解析
首先题目中“ffff:0006单元中的数”没有明确指出是该位置的字节型数据还是字型数据,这影响到结果是否会超出DX所能存储的范围。如果是字节型数据,其能表示的最大值是0FFh,乘以3是不会超出DX能容纳的最大值0FFFFh的;但是若是要将字型数据(最大值为0FFFFh)乘以3,那就存在着结果超出DX能容纳的最大值的可能了。
其次,对字节型数据和对字型数据完成上述计算的代码也稍有区别(是否对DH清零等)。
再者,题目也没有说明所述的数据是无符号数还是带符号数,下面代码均按无符号整数来处理了(用SHL 左移1相当于乘以2,再加上原值即为乘3;也可直接用连续的ADD DX,AX/ADC DX,0完成;如果是带符号数则用MOV AX,DX/MOV DL,3/IMUL DL/MOV DX,AX完成)。
以下是对字节型数据的:
D:\>debug
-a
143F:0100 mov ax,ffff
143F:0103 mov ds,ax
143F:0105 mov dl,[6]
143F:0109 xor dh,dh
143F:010B mov ax,dx
143F:010D shl ax,1
143F:010F add dx,ax
143F:0111 int 3
143F:0112
-
-d ffff:6 l1
FFFF:0000 30 0
-g=100
AX=0060 BX=0000 CX=0000 DX=0090 SP=FFEE BP=0000 SI=0000 DI=0000
DS=FFFF ES=143F SS=143F CS=143F IP=0111 NV UP EI PL NZ NA PE NC
143F:0111 CC INT 3
-
以下是对字型数据的:
D:\>debug
-a
143F:0100 mov ax,ffff
143F:0103 mov ds,ax
143F:0105 mov dx,[6]
143F:0109 mov ax,dx
143F:010B shl ax,1
143F:010D add dx,ax
143F:010F int 3
143F:0110
-
-d ffff:6 l2
FFFF:0000 30 2F
-g=100
AX=5E60 BX=0000 CX=0000 DX=8D90 SP=FFEE BP=0000 SI=0000 DI=0000
DS=FFFF ES=143F SS=143F CS=143F IP=010F OV UP EI NG NZ NA PE NC
143F:010F CC INT 3
-