第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU...

28
第第第第第 1.CPU 第第第第第第第 第第第第第第第第第第第 ?, CPU 第第第第第第第第第第2. 第第第第第第第第 CPU 第第 第第第 CISC 第 RISC 3. 第第第第第第第第第第第第第第第第第 第第第第第第第第第第第第 第第第第 ,,? 4. 第第第第第第第第第第5. 第第第第第第第第第第第第第第 第第第第第第第第第第第第 第第第 第第第第第第第第第 ,,, , 第第第第第 ?。 6. 第第第第第第第第第第 第第第第第 第第第第第第第第第第 体?? 7. 第第第第第第第第第第第第第 第第第第

description

第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC 和 RISC ? 3. 控制存储器是用来存放微程序的存储器,它应该比主存储器速度快,对不对? 4. 什么是控制流驱动方式? 5. 大多数微型机的总线由地址总线,数据总线和控制总线组成,因此,它们是三总线结构的 , 此说法对不对?。 6. 总线的时序控制方式大体有哪两种?什么是扩展同步方式? 7. 可运行于微机平台上的操作系统有哪些?. 第一部分课后复习题 1 . 80486 有几个物理空间?它们是如何区分的? - PowerPoint PPT Presentation

Transcript of 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU...

Page 1: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

第一部分预习题1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类?2. 试举出几种其它的 CPU 类型。什么是 CISC 和 RISC ?3. 控制存储器是用来存放微程序的存储器,它应该比主存储器速度快,对不对?4. 什么是控制流驱动方式?5. 大多数微型机的总线由地址总线,数据总线和控制总线组成,因此,它们是三总线结构的 , 此说法对不对?。6. 总线的时序控制方式大体有哪两种?什么是扩展同步方式?7. 可运行于微机平台上的操作系统有哪些?

Page 2: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

第一部分课后复习题1 . 80486 有几个物理空间?它们是如何区分的?2 . 80486 在实方式下,有两段物理存储空间需要保留, 试说明它们的范围和用途。3 . 试说明 80486 的环特权级保护方式的原理,特权规则及应用。4 . 80486 有 3 个明确的存储地址空间,试说明它们之间的转换关系, 可绘图说明。 5 . 试说明 80486 段式存储方式下, GDT , LDT , GDTR,LDTR 的作用与相互关系。6. 某系统中 GDT 段描述符的粒度位为 0 ,则 GDT 的最大长度为多少? 能否推知该操作系统中运行的进程数量决不能超过多少?7. 请说明 CAHCE 的作用。8 . 80486 的 4GB 空间可以产生多少个页面?其中页目录和页表各是多少?9 . 请说明 80486 的 HOLD 与 HOLDA 信号引脚的作用。猝发总线周期是什么?10. 80486 的 EFLAG 的 IOPL,NT,VM 标志起何作用?在实模式下,使用 32位的寄存 器,为何有效地址不得超过 FFFFH ?

Page 3: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

3. 解释 VM,VMM,VXD 以及它们的相互关系。

1.抢先式多工( preemptive multitasking )与合作型多工各是什么含义? Windows95采用的是那种方式?2. 简述 WIN95 操作系统的层次结构和组成。

第二部分课后复习题

Page 4: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

1. 外设为什么要通过接口电路和主机系统相连?2. 接口电路的作用是什么? I/O 接口应具备那些功能?3. 什么是端口?端口有几类?在硬件设计上, CPU访问这些端口时,应具备那些条件?4. 微机系统和输入输出设备交换信息的方式有几种?各有什么特点。5.定时 /计数器各通道的 CLK , GATE 信号各有什么用?6.定时 /计数器的 3 个通道在微机中如何应用?

第三部分课后复习题 1

Page 5: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

课本 8章作业 1- 7 题。第三部分课后复习题 2

课本 9章作业 1,3,4,5 题。1. 什么是 USB? 它有什么特点? USB 的数据传输类型有哪些?2.USB交换中的基本单位是什么?每次交换至少需要哪几个包 ?

第三部分课后复习题 3

1. 教材 10章第 1 题。 2. 教材 11章第 1 题。

第三部分课后复习题 4

Page 6: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

程序阅读

Page 7: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

1) function StrICOMP(const Str1, Str2: PChar): Integer; assembler;asm PUSH EDI PUSH ESI MOV EDI,EDX MOV ESI,EAX MOV ECX,0FFFFFFFFH XOR EAX,EAX REPNE SCASB NOT ECX MOV EDI,EDX XOR EDX,EDX@@1: REPE CMPSB JE @@4 MOV AL,[ESI-1] CMP AL,'a' JB @@2

1. 以下是 PASCAL 中用汇编写的子程序,子程序参数传递规范是前 3 个参数通过寄存器EAX,EDX,ECX传递 .分析说明以下子程序的功能及返回值

CMP AL,'z' JA @@2 SUB AL,20H@@2: MOV DL,[EDI-1] CMP DL,'a' JB @@3 CMP DL,'z' JA @@3 SUB DL,20H@@3: SUB EAX,EDX JE @@1@@4: POP ESI POP EDIend;

{compare two strings without case sensitivity. StrIComp returns a value greater than 0 if Str1 > Str2, less than 0 if Str1 < Str2, and returns 0 if the strings are equal except for differences in case.}

Page 8: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

2) function StrUPPER(Str: PChar): PChar; assembler;asm PUSH ESI MOV ESI,Str MOV EDX,Str@@1: LODSB OR AL,AL JE @@2 CMP AL,'a' JB @@1 CMP AL,'z' JA @@1 SUB AL,20H MOV [ESI-1],AL JMP @@1@@2: XCHG EAX,EDX POP ESIend;

3)function StrLOWER(Str: PChar): PChar; assembler;asm PUSH ESI MOV ESI,Str MOV EDX,Str@@1: LODSB OR AL,AL JE @@2 CMP AL,'A' JB @@1 CMP AL,'Z' JA @@1 ADD AL,20H MOV [ESI-1],AL JMP @@1@@2: XCHG EAX,EDX POP ESIend;

Page 9: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

参考子程序function StrLen(const Str: PChar): Cardinal; assembler;//返回字符串的长度asm MOV EDX,EDI MOV EDI,EAX MOV ECX,0FFFFFFFFH XOR AL,AL REPNE SCASB MOV EAX,0FFFFFFFEH SUB EAX,ECX MOV EDI,EDXend;

function StrEnd(const Str: PChar): PChar; assembler;//返回字符串尾的位置asm MOV EDX,EDI MOV EDI,EAX MOV ECX,0FFFFFFFFH XOR AL,AL REPNE SCASB LEA EAX,[EDI-1] MOV EDI,EDXend;

Page 10: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

procedure MOV( const Source; var Dest; count : Integer );asm PUSH ESI PUSH EDI

MOV ESI,EAX MOV EDI,EDX

MOV EAX,ECX

CMP EDI,ESI JA @@down JE @@exit

SAR ECX,2 JS @@exit

REP MOVSD

MOV ECX,EAX AND ECX,03H REP MOVSB JMP @@exit

@@down: LEA ESI,[ESI+ECX-4] LEA EDI,[EDI+ECX-4]

SAR ECX,2 JS @@exit STD REP MOVSD

MOV ECX,EAX AND ECX,03H ADD ESI,4-1 ADD EDI,4-1 REP MOVSB CLD@@exit: POP EDI POP ESIend;

Page 11: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function StrPos(const Str1, Str2: PChar): PChar; assembler;asm PUSH EDI PUSH ESI PUSH EBX OR EAX,EAX JE @@2 OR EDX,EDX JE @@2 MOV EBX,EAX MOV EDI,EDX XOR AL,AL MOV ECX,0FFFFFFFFH REPNE SCASB NOT ECX DEC ECX JE @@2 MOV ESI,ECX MOV EDI,EBX MOV ECX,0FFFFFFFFH REPNE SCASB NOT ECX SUB ECX,ESI JBE @@2 MOV EDI,EBX

LEA EBX,[ESI-1]@@1: MOV ESI,EDXLODSB REPNE SCASB JNE @@2 MOV EAX,ECX PUSH EDI MOV ECX,EBX REPE CMPSB POP EDI MOV ECX,EAX JNE @@1 LEA EAX,[EDI-1] JMP @@3@@2: XOR EAX,EAX@@3: POP EBX POP ESI POP EDIend;

//Returns a pointer to the first occurrence of STR2 in STR1.

Page 12: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function StrChDeletePrimZ(P : PAnsiChar; Pos : Cardinal) : PAnsiChar;register;asm push edi push esi push ebx

mov ebx, eax mov edi, eax

xor al, al or ecx, -1 repne scasb not ecx dec ecx or ecx, ecx jz @@ExitPoint

sub ecx, edx jb @@ExitPoint

mov edi, ebx add edi, edx mov esi, edi inc esi inc ecx rep movsb

@@ExitPoint: mov eax, ebx pop ebx pop esi pop ediend;

Page 13: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

procedure ExchangeWords(var I, J : Word);{$IFDEF WIN32}register;asm{$ELSE}asm mov eax,i mov edx,j{$ENDIF} mov cx, [eax] push ecx mov cx, [edx] mov [eax], cx pop ecx mov [edx], cxend;

procedure ExchangeLongInts(var I, J : LongInt);{$IFDEF WIN32}register;asm{$ELSE}asm mov eax,i mov edx,j{$ENDIF} mov ecx, [eax] push ecx mov ecx, [edx] mov [eax], ecx pop ecx mov [edx], ecxend;

Page 14: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

procedure FillWord(var Dest; Count : Cardinal; Filler : Word);asm{$IFDEF WIN32} push edi{$ENDIF} mov edi,Dest mov ax,Filler mov ecx,Count cld rep stosw{$IFDEF WIN32} pop edi{$ENDIF}end;

Page 15: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

procedure FillStruct(var Dest; Count : Cardinal; var Filler; FillerSize : Cardinal);{$IFDEF WIN32}register;asm{$ELSE}asm mov eax,Dest mov edx,Count mov ecx,Filler{$ENDIF} or edx, edx jz @@Exit

push edi push esi push ebx mov edi, eax mov ebx, ecx

@@NextStruct: mov esi, ebx mov ecx, FillerSize shr ecx, 1 rep movsw adc ecx, ecx rep movsb dec edx jnz @@NextStruct

pop ebx pop esi pop edi

@@Exit:end;

Page 16: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

procedure ExchangeStructs(var I, J; Size : Cardinal);{$IFDEF WIN32}register;asm{$ELSE}asm mov eax,i mov edx,j mov ecx,Size{$ENDIF} push edi push ebx push ecx shr ecx, 2 jz @@LessThanFour

@@AgainDWords: mov ebx, [eax] mov edi, [edx] mov [edx], ebx mov [eax], edi add eax, 4 add edx, 4 dec ecx jnz @@AgainDWords

@@LessThanFour:

pop ecxand ecx, $3jz @@Done mov bl, [eax] mov bh, [edx] mov [edx], bl mov [eax], bh inc eax inc edx dec ecx jz @@Done mov bl, [eax] mov bh, [edx] mov [edx], bl mov [eax], bh inc eax inc edx dec ecx jz @@Done mov bl, [eax] mov bh, [edx] mov [edx], bl mov [eax], bh

@@Done: pop ebx pop ediend;

Page 17: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function StrLCopy(Dest: PChar; const Source: PChar; MaxLen: Cardinal): PChar; assembler;asm PUSH EDI PUSH ESI PUSH EBX MOV ESI,EAX MOV EDI,EDX MOV EBX,ECX XOR AL,AL TEST ECX,ECX JZ @@1 REPNE SCASB JNE @@1 INC ECX@@1: SUB EBX,ECX MOV EDI,ESI MOV ESI,EDX MOV EDX,EDI MOV ECX,EBX SHR ECX,2 REP MOVSD MOV ECX,EBX AND ECX,3 REP MOVSB

STOSB MOV EAX,EDX POP EBX POP ESI POP EDIend;

Page 18: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function StrLCat(Dest: PChar; const Source: PChar; MaxLen: Cardinal): PChar; assembler;asm PUSH EDI PUSH ESI PUSH EBX MOV EDI,Dest MOV ESI,Source MOV EBX,MaxLen CALL StrEnd MOV ECX,EDI ADD ECX,EBX SUB ECX,EAX JBE @@1 MOV EDX,ESI CALL StrLCopy@@1: MOV EAX,EDI POP EBX POP ESI POP EDIend;

{trLCat appends at most MaxLen - StrLen(Dest) characters from Source to the end of Dest and returns Dest. That is, MaxLen indicates the maximum length that is allowed in the result string.}

Page 19: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function GetCPUSpeed_M3: Double;const DelayTime = 100;var TimerHi, TimerLo: DWORD; PriorityClass, Priority: Integer;begin PriorityClass:=GetPriorityClass(GetCurrentProcess); Priority:=GetThreadPriority(GetCurrentThread); SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); Sleep(10);

Page 20: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

asm dw 310Fh // rdtsc mov TimerLo, eax mov TimerHi, edx end; Sleep(DelayTime); asm dw 310Fh sub eax, TimerLo sbb edx, TimerHi mov TimerLo, eax mov TimerHi, edx end;

SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass); Result:=TimerLo/(1000.0*DelayTime);end;

Page 21: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function IsCPUIDAvailable : Boolean; register;asm PUSHFD // {} POP EAX // {} MOV EDX,EAX //{} XOR EAX,ID_BIT // {} PUSH EAX //{} POPFD //{} PUSHFD //{} POP EAX //{} XOR EAX,EDX // {} JZ @exit //{} MOV AL,True //{}@exit:end;

const ID_BIT = $200000; // EFLAGS ID bit

Page 22: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function GetCPUID : TCPUID; assembler; register;asm PUSH EBX {Save affected register} PUSH EDI MOV EDI,EAX {@Resukt} MOV EAX,1 DW $A20F {CPUID Command} STOSD {CPUID[1]} MOV EAX,EBX STOSD {CPUID[2]} MOV EAX,ECX STOSD {CPUID[3]} MOV EAX,EDX STOSD {CPUID[4]} POP EDI {Restore registers} POP EBXend;

type TCPUID = array[1..4] of Longint; TVendor = array [0..11] of char;

Page 23: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

function GetCPUVendor : TVendor; assembler; register;asm PUSH EBX {Save affected register} PUSH EDI MOV EDI,EAX {@Result (TVendor)} MOV EAX,0 DW $A20F {CPUID Command} MOV EAX,EBX XCHG EBX,ECX {save ECX result} MOV ECX,4@1: STOSB SHR EAX,8 LOOP @1 MOV EAX,EDX MOV ECX,4

@2: STOSB SHR EAX,8 LOOP @2 MOV EAX,EBX MOV ECX,4@3: STOSB SHR EAX,8 LOOP @3 POP EDI {Restore registers} POP EBXend;

Page 24: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

procedure Move28(const ASource; var ADest; ACount: Integer);asm mov ecx, [eax] mov [edx], ecx mov ecx, [eax + 4] mov [edx + 4], ecx mov ecx, [eax + 8] mov [edx + 8], ecx mov ecx, [eax + 12] mov [edx + 12], ecx mov ecx, [eax + 16] mov [edx + 16], ecx mov ecx, [eax + 20] mov eax, [eax + 24] mov [edx + 20], ecx mov [edx + 24], eaxend;

procedure Move36(const ASource; var ADest; ACount: Integer);asm fild qword ptr [eax] fild qword ptr [eax + 8] fild qword ptr [eax + 16] fild qword ptr [eax + 24] mov ecx, [eax + 32] mov [edx + 32], ecx fistp qword ptr [edx + 24] fistp qword ptr [edx + 16] fistp qword ptr [edx + 8] fistp qword ptr [edx]end;

Page 25: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

procedure FillDWord(var AAddress; AByteCount: integer; ADWordFillValue: Cardinal);asm {On Entry: eax = AAddress edx = AByteCount ecx = ADWordFillValue} add eax, edx neg edx jns @Done@FillLoop: mov [eax + edx], ecx add edx, 4 js @FillLoop@Done:end;

function SumCardinals(AStartValue: Cardinal; APointer: PCardinal; ACount: Cardinal): Cardinal;asm {On entry: eax = AStartValue, edx = APointer; ecx = ACount} add edx, ecx neg ecx@AddLoop: add eax, [edx + ecx] add ecx, 4 js @AddLoopend;

Page 26: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

STOS/STOSB/STOSW/STOSD Store string data

variations bytes 8088 186 286 386 486 Pentium

stosb 1 11 10 3 4 5 3 NP

stosw 1 15 10 3 4 5 3 NP

stosd 1 - - - 4 5 3 NP

rep stosb 2 9+10n 6+9n 4+3n 5+5n 7+4n* 3+n NP

rep stosw 2 9+14n 6+9n 4+3n 5+5n 7+4n* 3+n NP

rep stosd 2 - - - 5+5n 7+4n* 3+n NP

* = 5 if n=0, 13 if n=1

(n = count of bytes, words or dwords)

Example: rep stosd

Page 27: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

MOV Move data

operands bytes 8088 186 286 386 486 Pentium

reg, reg 2 2 2 2 2 1 1 UV

mem, reg 2+d(0-2) 13+EA 9 3 2 1 1 UV

reg, mem 2+d(0-2) 12+EA 12 5 4 1 1 UV

mem, imm 2+d(0-2) 14+EA 12-13 3 2 1 1 UV*

+i(1,2)

reg, imm 2+i(1,2) 4 3-4 2 2 1 1 UV

acc, mem 3 14 8 5 4 1 1 UV

mem, acc 3 14 9 3 2 1 1 UV

* = not pairable if there is a displacement and immediate

Example: mov eax, ebx

Page 28: 第一部分预习题 1.CPU 由哪两部分组成?按照微命令产生的方式, CPU 控制器可分为哪两大类? 2. 试举出几种其它的 CPU 类型。什么是 CISC

LEA Load effective address

operands bytes 8088 186 286 386 486 Pentium

r16, mem 2+d(2) 2+EA 6 3 2 1-2 1 UV

r32, mem 2+d(2) - - - 2 1-2 1 UV

Example: lea eax, [eax+ebx*2+3]