logo资料库

汇编课后习题.doc

第1页 / 共77页
第2页 / 共77页
第3页 / 共77页
第4页 / 共77页
第5页 / 共77页
第6页 / 共77页
第7页 / 共77页
第8页 / 共77页
资料共77页,剩余部分请下载后查看
检测点 1.1 (1)1 个 CPU 的寻址能力为 8KB,那么它的地址总线的宽度为 13 位。 (2)1KB 的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。 (3)1KB 的存储器可以存储 8192(2^13) 个 bit, 1024 个 Byte。 (4)1GB 是 1073741824 (2^30) 个 Byte、1MB 是 1048576(2^20) 个 Byte、1KB 是 1024(2^10)个 Byte。 (5)8080、8088、80296、80386 的地址总线宽度分别为 16 根、20 根、24 根、32 根,则它 们的寻址能力分别为:64 (KB)、 1 (MB)、 16 (MB)、 4 (GB)。 (6)8080、8088、8086、80286、80386 的数据总线宽度分别为 8 根、8 根、16 根、16 根、 32 根。则它们一次可以传送的数据为: 1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B)。 (7)从内存中读取 1024 字节的数据,8086 至少要读 512 次,80386 至少要读 256 次。 (8)在存储器中,数据和程序以 二进制 形式存放。 解题过程: (1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即 2^30)1MB=1048576B(即 2^20)1KB=1024B(即 2^10)。 (5)一个 CPU 有 N 根地址线,则可以说这个 CPU 的地址总线的宽度为 N。这样的 CPU 最多 可以寻找 2 的 N 次方个内存单元。(一个内存单元=1Byte)。 (6)8 根数据总线一次可以传送 8 位二进制数据(即一个字节)。 (7)8086 的数据总线宽度为 16 根(即一次传送的数据为 2B)1024B/2B=512,同理 1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。 检测点 2.1 (1) 写出每条汇编指令执行后相关寄存器中的值。 mov ax,62627 AX=F4A3H mov ah,31H mov al,23H add ax,ax AX=31A3H AX=3123H AX=6246H mov bx,826CH BX=826CH mov cx,ax mov ax,bx add ax,bx mov al,bh mov ah,bl CX=6246H AX=826CH AX=04D8H AX=0482H AX=6C82H
add ah,ah add al,6 add al,al mov ax,cx AX=D882H AX=D888H AX=D810H AX=6246H Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\ADMINI~1>debug -a 0C1C:0100 mov ax,f4a3 0C1C:0103 mov ah,31 0C1C:0105 mov al,23 0C1C:0107 add ax,ax 0C1C:0109 mov bx,826c 0C1C:010C mov cx,ax 0C1C:010E mov ax,bx 0C1C:0110 add ax,bx 0C1C:0112 mov al,bh 0C1C:0114 mov ah,bl 0C1C:0116 add ah,ah 0C1C:0118 add al,6 0C1C:011A add al,al 0C1C:011C mov ax,cx 0C1C:011E -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B8A3F4 MOV AX,F4A3 -t AX=F4A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC 0C1C:0103 B431 MOV AH,31 -t
AX=31A3 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0105 NV UP EI PL NZ NA PO NC 0C1C:0105 B023 MOV AL,23 -t AX=3123 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0107 NV UP EI PL NZ NA PO NC 0C1C:0107 01C0 ADD AX,AX -t AX=6246 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ NA PO NC 0C1C:0109 BB6C82 MOV BX,826C -t AX=6246 BX=826C CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010C NV UP EI PL NZ NA PO NC 0C1C:010C 89C1 MOV CX,AX -t AX=6246 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010E NV UP EI PL NZ NA PO NC 0C1C:010E 89D8 MOV AX,BX -t AX=826C BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0110 NV UP EI PL NZ NA PO NC 0C1C:0110 01D8 ADD AX,BX -t AX=04D8 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0112 OV UP EI PL NZ AC PE CY 0C1C:0112 88F8 MOV AL,BH -t AX=0482 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000
DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0114 OV UP EI PL NZ AC PE CY 0C1C:0114 88DC MOV AH,BL -t AX=6C82 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0116 OV UP EI PL NZ AC PE CY 0C1C:0116 00E4 ADD AH,AH -t AX=D882 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0118 OV UP EI NG NZ AC PE NC 0C1C:0118 0406 ADD AL,06 -t AX=D888 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011A NV UP EI NG NZ NA PE NC 0C1C:011A 00C0 ADD AL,AL -t AX=D810 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011C OV UP EI PL NZ AC PO CY 0C1C:011C 89C8 MOV AX,CX -t AX=6246 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011E OV UP EI PL NZ AC PO CY OR CX,[SI] DS:0000=20CD 0C1C:011E 0B0C -q 检测点 2.1 (2) 只能使用目前学过的汇编指令,最多使用 4 条指令,编程计算 2 的 4 次方。 mov add add add ax,2 ax,ax ax,ax ax,ax AX=2 AX=4 AX=8 AX=16
Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\ADMINI~1>debug -a 0C1C:0100 mov ax,2 0C1C:0103 add ax,ax 0C1C:0105 add ax,ax 0C1C:0107 add ax,ax 0C1C:0109 -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B80200 MOV AX,0002 -t AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC 0C1C:0103 01C0 ADD AX,AX -t AX=0004 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0105 NV UP EI PL NZ NA PO NC 0C1C:0105 01C0 ADD AX,AX -t AX=0008 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0107 NV UP EI PL NZ NA PO NC 0C1C:0107 01C0 ADD AX,AX -t AX=0010 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ AC PO NC
AND [BX+SI+1516],CL DS:1516=00 0C1C:0109 20881615 -q 检测点 2.2 (1) 给定段地址为 0001H,仅通过变化偏移地址寻址,CPU 的寻址范围 为 0010H 到 1000FH 。 解题过程: 物理地址=SA*16+EA EA 的变化范围为 0h~ffffh 物理地址范围为(SA*16+0h)~(SA*16+ffffh) 现在 SA=0001h,那么寻址范围为 (0001h*16+0h)~(0001h*16+ffffh) =0010h~1000fh 检测点 2.2 (2) 有一数据存放在内存 20000H 单元中,现给定段地址为 SA,若想用偏移地址寻到此单元。 则 SA 应满足的条件是:最小为 1001H ,最大为 2000H 。 当段地址给定为 1001H 以下和 2000H 以上,CPU 无论怎么变化偏移地址都无法寻到 20000H 单元。 解题过程: 物理地址=SA*16+EA 20000h=SA*16+EA SA=(20000h-EA)/16=2000h-EA/16 EA 取最大值时,SA=2000h-ffffh/16=1001h,SA 为最小值 EA 取最小值时,SA=2000h-0h/16=2000h,SA 为最大值 这里的 ffffH/16=fffh 是通过 WIN 自带计算器算的 按位移来算确实应该为 fff.fh,这里小数点后的 f 应该是省略了 单就除法来说,应有商和余数,但此题要求的是地址最大和最小,所以余数忽略了 如果根据位移的算法(段地址*16=16 进制左移一位),小数点后应该是不能省略的 我们可以反过来再思考下,如果 SA 为 1000h 的话,小数点后省略 SA=1000h,EA 取最大 ffffh,物理地址为 1ffffh,将无法寻到 20000H 单元
这道题不应看成是单纯的计算题 检测点 2.3 下面的 3 条指令执行后,cpu 几次修改 IP?都是在什么时候?最后 IP 中的值是多少? mov ax,bx sub ax,ax jmp ax 答:一共修改四次 第一次:读取 mov ax,bx 之后 第二次:读取 sub ax,ax 之后 第三次:读取 jmp ax 之后 第四次:执行 jmp ax 修改 IP 最后 IP 的值为 0000H,因为最后 ax 中的值为 0000H,所以 IP 中的值也为 0000H 实验一 查看 CPU 和内存,用机器指令和汇编指令编程 2 实验任务 (1)使用 Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU 中相关寄 存器中内容的变化。 机器码 b8 20 4e 05 16 14 bb 00 20 01 d8 89 c3 01 d8 b8 1a 00 bb 26 00 00 d8 00 dc 00 c7 b4 00 00 d8 04 9c 汇编指令 寄存器 mov ax,4E20H add ax,1416H mov BX,2000H add ax,bx mov bx,ax add ax,bx mov ax,001AH mov bx,0026H add al,bl add ah,bl add bh,al mov ah,0 add al,bl add al,9CH ax=4E20H ax=6236H bx=2000H ax=8236H bx=8236H ax=046CH ax=001AH bx=0026H ax=0040H ax=2640H bx=4026H ax=0040H ax=0066H ax=0002H Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001.
C:\DOCUME~1\ADMINI~1>debug -a 0C1C:0100 mov ax,4e20 0C1C:0103 add ax,1416 0C1C:0106 mov bx,2000 0C1C:0109 add ax,bx 0C1C:010B mov bx,ax 0C1C:010D add ax,bx 0C1C:010F mov ax,001a 0C1C:0112 mov bx,0026 0C1C:0115 add al,bl 0C1C:0117 add ah,bl 0C1C:0119 add bh,al 0C1C:011B mov ah,0 0C1C:011D add al,bl 0C1C:011F add al,9c 0C1C:0121 -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0100 NV UP EI PL NZ NA PO NC 0C1C:0100 B8204E MOV AX,4E20 -t AX=4E20 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0103 NV UP EI PL NZ NA PO NC 0C1C:0103 051614 ADD AX,1416 -t AX=6236 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0106 NV UP EI PL NZ NA PE NC 0C1C:0106 BB0020 MOV BX,2000 -t AX=6236 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ NA PE NC
分享到:
收藏