mov ah,06h mov dl,0ffh int 21hL,300,错误在超出一个字节的表数范围?


《微机原理及应用》习题答案
第一章
1.11 请完成下列数制转换:
(1) 将174.66D转换为对应的二进制和十六进制形式。
(2) 将100011101011.01011B转换为对应的十进制和十六进制形式。 (3) 将F18A6.6H转换为对应的二进制和十进制形式。 答:174.66D=10101110.1010B=AE.AH
100011101011.01011B=2283.34375D=8EB.58H F18A6.6H=989350.375D
1.12 请写出与数据+37和-37对应的8位机器数原码、反码和补码,并分别用二进制和十六进制表示出来。
答:-37D=(10100101B)原=(11011010B)反=(11011011B)补
1.13 8位机器数46H,若作为无符号数和补码有符号数,其对应的真值各是什么?若作为BCD码和ASCII码,其对应的又是什么?
答:无符号数46H=70,补码46H=+70 BCD码46H=46,ASCII码46H=“F”
第二章
2.5什么是8088中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达:
(1) FFFFH:0H (2) 40H:17H (3) 2000H:4500H (4) B821H:4567H
答:⑴ FFFFH:0H = FFFF0H ⑵ 40H:17H = 00417H ⑶ 2000H:4500H = 24500H ⑷ B821H:4567H = BC777H
2.8已知DS=2000H,BX=0100H,SI=0002,存储单元[20100H]~[20103H]依次存放12H,34H,56H,78H,[21200H]~[21203H]依次存放2AH,4CH,87H,65H,说明下列每条指令执行完后AX寄存器的内容以及源操作数的寻址方式? 答:⑴ AX=1200H,立即数寻址; ⑵ AX=0100H,寄存器寻址; ⑶
AX=4C2AH,直接寻址;
⑷ AX=3412H,寄存器间接寻址; ⑸ AX=4C2AH,寄存器相对寻址; ⑹ AX=7865H,基址变址寻址; ⑺ AX=65B7H,基址变址相对寻址。 2.9 说明下面各条指令的具体错误原因:
(1) mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5) mov al,300 (6)mov [sp],ax (7)mov ax,bx+di (8)mov 20h,ah 答: ⑴操作数类型不同;
⑵不能手工修改IP;
⑶不能将立即数直接MOV到段寄存器; ⑷不能在段寄存器之间直接MOV数据; ⑸300大于AL所能存放的数据的范围;
⑹寄存器间接寻址只能用BX/BP/SI/DI之一; ⑺MOV AX,[BX+DI];
⑻目的操作数不能是立即数。
2.10 已知数字0~9对应的格雷码依次为:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table为首地址(设为200H)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。 lea bx,table mov al,8 xlat 答:
lea bx,table ;bx=0200h mov al,8 ;al=08h xlat ;al=12h
2.11给出下列各条指令执行后的AL值,以及CF,ZF,SF,OF和PF的状态: mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al
答:⑴ al=89h
⑵ al=12h,CF=1,ZF=0,SF=0,OF=1,PF=1,AF=1 ⑶ al=afh, CF=0,ZF=0,SF=1,OF=0,PF=1,AF=0 ⑷ al=afh, CF=1,ZF=0,SF=1,OF=1,PF=1,AF=0 ⑸ al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=0 ⑹ al=ffh,
CF=0,ZF=0,SF=1,OF=0,PF=1,AF=1 ⑺ al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=1
2.12请分别用一条汇编语言指令完成如下功能:
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。 (2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加并
把结果送到AL中。用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内 容相加,并把结果送回存储器中。
(4) 用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果
送回该存储单元中。
(5) 把数0A0H与AL寄存器的内容相加,并把结果送回AL中。 答:
⑴ add dx, bx;
⑵ add al,[bx+si]; ⑶ add [bx+00b2h],cx
⑷ add word ptr [0520h],3412h ⑸ add al,0a0h
2.13设X,Y,Z,V均为16位带符号数,分别装在X,Y,Z,V存储器单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。
mov ax,x imul y mov cx,ax mox bx,dx mov ax,z cwd
add cx,ax adc bx,dx sub cx,540 abb bx,0 mov ax,v cwd
sub ax,cx abb dx,bx idiv x
答:(V -( X * Y + Z - 540 ) )/ X
2.14给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。 mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax
test ax,0f0f0h 答:⑴ ax=1470h
⑵ ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0 ⑶ ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0 ⑷ ax=0000h,CF=0,ZF=0,SF=0,OF=1,PF=1 ⑸ ax=0ffffh, CF=0,ZF=0,SF=0,OF=1,PF=1
⑹ ax=0ffffh, CF=0,ZF=0,SF=1,OF=0,PF=12.16假设DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H处存放3280H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么? 答:⑴ 1256h; ⑵ 3280h
2.17判断下列程序段跳转的条件 (1) xor ax,leleh
je equal
(2) test al,10000001b
jnz there (3) cmp cx,64h
jb there
答:⑴ ax=1e1eh; ⑵ al=1******1b; ⑶ cx<64h
2.18如下是一段软件延时程序,请问NOP指令执行了多少次? xor cx,cx delay: nop
loop delay
答:65536
2.19 有一个首地址为array的20个字的数组,说明下列程序段的功能。 mov cx,20
mov ax,0 mov si,ax
sumlp: add ax,array[si] add si,2 loop sumlp mov total,ax
答:将array数组的20个字(无进位)累加,其和存入total单元。 2.20按照下列要求,编写相应的程序段:
(1) 由string指示的起始地址的主存单元中存放一个字符串(长度大于6),把该字符
串的第1个和第6个字符(字节量)传送给DX寄存器。
(2) 有两个32位数值,按“小端方式”存放在两个缓冲区buffer1和 buffer2中,编
写程序段完成DX.AX←buffer1-buffer2功能。
(3) 编写一个程序段,在DX高4位全为0时,使AX=0;否则,使AX=-1。 (4) 把DX.AX中的双字右移4位。
(5) 有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出或
借位)存于原处。
答:
⑴ mov dl,string mov dh,string+5
⑵ mov ax,word ptr buffer1 sub ax, word ptr buffer2 mov dx,word ptr buffer1+2 sbb dx,buffer2+2 ⑶ test dx,0f0h je t1 mov ax,-1 jmp done t1: mov ax,0 done: …..
⑷ mov ax,1234h mov dx,5678h mov cx,4 lp1:
shr dx,1 rcr ax,1 loop lp1 ⑸ lea bx,array mov cx,100 lp1:
sub [bx],1 inc bx
}

我要回帖

更多关于 mov ah,06h mov dl,0ffh int 21h 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信