第四章 80x86匯編語言程式設計
1.偽指令陳述句與硬指令陳述句的本質區別是什么?偽指令有什么主要作用?
答:區別:偽指令陳述句是能執行的陳述句,硬指令陳述句是CPU可以執行的陳述句,
偽指令陳述句主要作用是為匯編程式提供解釋說明,它僅僅是在匯編程序中告訴匯編程式如何進行匯編,
7.假設MYWORD是一個字變數,MYBYTE1和MYBYTE2是兩個位元組變數,指出下列陳述句中的錯誤及其原因,
- 1.
MOV BYTE PTR[BX], 1000
答:資料型別不匹配,目的地址單元是位元組單元,1000大于255,無法存放,
- 2.
MOV BX, OFFSET[SI]
答:OFFSET后只能跟識別符號,
- 3.
CMP MYBYTE1, MYBYTE2
答:CMP的兩個運算元不能同時在存盤器中,
- 4.
MOV AL, MYBYTE1+MYBYTE2
答:運算子只能對常數進行操作,不能對變數進行操作,
- 5.
SUB AL, MYWORD
答:資料型別不匹配,AL是8位的,MYWORD是16位變數,
- 6.
JNZ MYWORD
答:MYWORD是變數,其指的單元中存放的是運算元,不能用做跳轉入口,
19.按下面要求寫一個簡化段定義格式的源程式
- 1.定義常量NUM,其值為5;資料段中定義字陣列變數DATALIST,它的頭5個字單元中依次存放-1,0,2,5和4,最后一個單元初值不定,
- 2.代碼段中的程式將DATALIST中頭NUM個數的累加和存入DATALIST的最后1個字單元中,
.model small
.stack
.data
num equ 5
datalist dw -1,0,2,5,4,?
.code
.startup
mov bx, offset datalist
mov CX, num
xor ax, ax
again:
add ax, [bx]
inc bx
inc bx
loop again
27.假設AX和SI存放的是有符號數,DX和DI存放的是無符號數,請用比較指令和條件轉移指令實作以下判斷,
(1) 若DX>DI,轉到ABOVE執行
(2) 若AX>SI,轉到GREATER執行,
(3) 若CX=0,轉到ZERO執行
(4) 若AX-SI產生溢位,轉到OVERFLOW執行,
(5) 若SI≤AX,轉到LESS_EQ執行,
(6) 若DI≤DX,轉到BELOW_EQ執行,
答:
(1) CMP DX,DI JA ABOVE
(2) CMP AX,SI JG GREATER
(3) CMP CX,0 JE ZERO
(4) CMP AX,SI
JO OVERFLOW
(5) CMP AX,SI
JGE LESS_EQ
(6) CMP DX,DI
JAE BELOW_EQ
33.已知用于LED數碼管顯示的代碼表為
LEDTABLE DB 0C0H,0FGH,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0C1 H,86H,8EH
它依次表示09AF這16個數碼的顯示代碼,撰寫一個程式實作將LEDNUM中的一個數字(09,AF)轉換成對應的LED顯示代碼
.model small
.stack 256
.data
LEDTABLE DB 0c0h,0a4h,0b0h,99h,92h,82h.0f8h
DB 80h,90h,88h,83h,0c6h,0clh,86h,8eh
LEDNUM DB?
.code
.startup
mov bx,offset LEDTABLE
mov al,LEDNUM
xlat ;al 中存在對應的LED顯尿代碼
exit 0
第五章 存盤器技術
7.簡要說明Cache的地址映射方式,Cache的替換演算法主要有哪些?為何要進行替換?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243310.html
標籤:其他
