……………………第二章……………………
检测点2.1
mov ax,62627 AX= 62627 F4A3
mov ah,31H AX= 31A3
mov al,23H AX= 3123
add ax,ax Ax= 6246
mov bx,826CH BX= 826C
mov cx,ax CX= 6246
mov ax,bx AX= 826C
add ax,bx AX= 04D8
mov al,bh AX= 0482
mov ah,bl AX= 6C82
add ah,ah AX= D882
add al,6 AX= D888
add al,al AX= D810
mov ax,cx AX= 6246
(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
mov ax,2
add ax,ax
add ax,ax
add ax,ax
检测点2.2
1.给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为(00010H)到(1000FH)
分析:偏移地址为16位,16位二进制数可表示的最大数范围是:2^16 = 64KB,变化范围为0~FFFFH
。根据公式:段地址×16+偏移地址=物理地址。题目中 段地址为0001H,即:CUP的寻址范围为:
0001H×16+0H=00010H 0001H×16+FFFFH=1000FH。
2.有一数据存放在内存20000H单元中,献给顶端地址为SA,若想用偏移地址寻到此单元。则SA满足的条
件是:最小为(1001H),最大为(2000H)
分析:如果用SA×16+(0H~FFFFH)=20000H 则 SA×16=10001
因为一个段地址的起始地址一定是(10进制16)或者说(10H )的倍数,一个数据的16进制形式左移1位
,相当于乘以16,即是左移后的段地址能被10H整除,所以偏移地址就不能取到FFFFH了,即偏移地址
的取值范围为 0H~FFF0H了。
所以最小:SA×16+FFF0H=20000H 最大:SA×16+0H=20000H
SA=1001H SA=2000H
3.提示,反过来思考一下,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻到20000H
单元?
1001>SA>2000
分析:同上
检测2.3
下面的3条指令执行后,CPU几次修改IP?都是什么时候?最后IP中的值是多少?
mov ax,bx
sub ax,ax
jmp ax
答:4次。最后值是0000H
分析:在读入mov ax,bx之前,IP指向mov ax,bx 首地址A
第一次:读入mov ax,bx后, IP指向sub ax,ax 首地址B
第二次:执行完mov ax bx后,读入sub ax,ax后,IP指向jmp ax首地址C
第三次:执行完sub ax,ax后,读入jmp ax后,IP指向下一指令首地址D
第四次:执行完jmp ax后,IP=ax即0000H 最后IP地址为0000H
实验一
Debug功能:R命令:查看、改变CPU寄存器的内容;
D命令:查看内存中的内容;
E命令:改写内存中的内容;
U命令:将内存中的机器指令翻译成汇编指令;
T命令:执行一条机器指令;
A命令:以汇编指令的格式在内存中写入一条机器指令。
实验任务:
1.ax=0002 bx=4026
2.ax=100(16进制)因为2^8=256是十进制。
3.不变(我的日期地址fff0:f5 fc)
4.不变
分析:3和4,
因为:fff0:f5 fc和b8100h属于只读存储器! |