Use backtick code blocks for syntax highlighting
This commit is contained in:
parent
8ed9dea394
commit
f658bfbb40
203 changed files with 26546 additions and 25801 deletions
96
04-09.md
96
04-09.md
|
|
@ -86,34 +86,36 @@ long as we had assumed, but a long time nonetheless.
|
|||
|
||||
**LISTING 4.11 LST4-11.ASM**
|
||||
|
||||
; Times speed of memory access to Enhanced Graphics
|
||||
; Adapter graphics mode display memory at A000:0000.
|
||||
;
|
||||
mov ax,0010h
|
||||
int 10h; select hi-res EGA graphics
|
||||
; mode 10 hex (AH=0 selects
|
||||
; BIOS set mode function,
|
||||
; with AL=mode to select)
|
||||
;
|
||||
mov ax,0a000h
|
||||
mov ds,ax
|
||||
mov es,ax ;move to & from same segment
|
||||
sub si,si ;move to & from same offset
|
||||
mov di,si
|
||||
mov cx,800h ;move 2K words
|
||||
cld
|
||||
call ZTimerOn
|
||||
rep movsw ;simply read each of the first
|
||||
; 2K words of the destination segment,
|
||||
; writing each byte immediately back
|
||||
; to the same address. No memory
|
||||
; locations are actually altered; this
|
||||
; is just to measure memory access
|
||||
; times
|
||||
call ZTimerOff
|
||||
;
|
||||
mov ax,0003h
|
||||
int 10h ;return to text mode
|
||||
```nasm
|
||||
; Times speed of memory access to Enhanced Graphics
|
||||
; Adapter graphics mode display memory at A000:0000.
|
||||
;
|
||||
mov ax,0010h
|
||||
int 10h; select hi-res EGA graphics
|
||||
; mode 10 hex (AH=0 selects
|
||||
; BIOS set mode function,
|
||||
; with AL=mode to select)
|
||||
;
|
||||
mov ax,0a000h
|
||||
mov ds,ax
|
||||
mov es,ax ;move to & from same segment
|
||||
sub si,si ;move to & from same offset
|
||||
mov di,si
|
||||
mov cx,800h ;move 2K words
|
||||
cld
|
||||
call ZTimerOn
|
||||
rep movsw ;simply read each of the first
|
||||
; 2K words of the destination segment,
|
||||
; writing each byte immediately back
|
||||
; to the same address. No memory
|
||||
; locations are actually altered; this
|
||||
; is just to measure memory access
|
||||
; times
|
||||
call ZTimerOff
|
||||
;
|
||||
mov ax,0003h
|
||||
int 10h ;return to text mode
|
||||
```
|
||||
|
||||
For comparison, let's see how long the same code takes when accessing
|
||||
normal system RAM instead of display memory. The code in Listing 4.12,
|
||||
|
|
@ -125,24 +127,26 @@ cycle-eater can *more than double* the execution time of 8088 code!
|
|||
|
||||
**LISTING 4.12 LST4-12.ASM**
|
||||
|
||||
; Times speed of memory access to normal system
|
||||
; memory.
|
||||
;
|
||||
mov ax,ds
|
||||
mov es,ax ;move to & from same segment
|
||||
sub si,si ;move to & from same offset
|
||||
mov di,si
|
||||
mov cx,800h ;move 2K words
|
||||
cld
|
||||
call ZTimerOn
|
||||
rep movsw ;simply read each of the first
|
||||
; 2K words of the destination segment,
|
||||
; writing each byte immediately back
|
||||
; to the same address. No memory
|
||||
; locations are actually altered; this
|
||||
; is just to measure memory access
|
||||
; times
|
||||
call ZTimerOff
|
||||
```nasm
|
||||
; Times speed of memory access to normal system
|
||||
; memory.
|
||||
;
|
||||
mov ax,ds
|
||||
mov es,ax ;move to & from same segment
|
||||
sub si,si ;move to & from same offset
|
||||
mov di,si
|
||||
mov cx,800h ;move 2K words
|
||||
cld
|
||||
call ZTimerOn
|
||||
rep movsw ;simply read each of the first
|
||||
; 2K words of the destination segment,
|
||||
; writing each byte immediately back
|
||||
; to the same address. No memory
|
||||
; locations are actually altered; this
|
||||
; is just to measure memory access
|
||||
; times
|
||||
call ZTimerOff
|
||||
```
|
||||
|
||||
Bear in mind that we're talking about a worst case here; the impact of
|
||||
the display adapter cycle-eater is proportional to the percent of time a
|
||||
|
|
|
|||
Loading…
Reference in a new issue