匯編基礎(chǔ)習(xí)題
題1
編寫(xiě)一個(gè)程序,計(jì)算的值。其中X、Y、Z均為16位帶符號(hào)數(shù),要求表達(dá)式的計(jì)算結(jié)果存放在數(shù)據(jù)段的RESULT單元中。
DATA SEGMENT
X DW 2H
Y DW 44H
Z DW 8H
RESULT DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,X
MOV BX,Y
IMUL BX ;有符號(hào)乘
SBB AX,Z ;借位減
IDIV X ;有符號(hào)除
MOV RESULT,AX
JMP $
CODE ENDS
END START
題2
設(shè)某班學(xué)生(10名)某門(mén)課程的成績(jī)存放在內(nèi)存中,試編程統(tǒng)計(jì)90分以上、80-89分、70-79分、60-69分、低于60分的學(xué)生人數(shù),并分別存放到A、B、C、D、E單元中。
DATA SEGMENT
TAB DB 60,70,80,90,77,88,76,69,74,58 ;10個(gè)學(xué)生成績(jī)
A DB 0H
B DB 0H
C DB 0H
D DB 0H
E DB 0H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET TAB ;初始化指針
MOV CX,10 ;設(shè)置計(jì)數(shù)器初值
SELECT:
MOV AL,[BX]
CMP AL,90 ;大于等于90
JGE G1
CMP AL,80 ;大于等于80
JGE G2
CMP AL,70 ;大于等于70
JGE G3
CMP AL,60 ;大于等于60
JGE G4
JMP G5 ;其他
G1:
INC A
JMP ENDLOOP
G2:
INC B
JMP ENDLOOP
G3:
INC C
JMP ENDLOOP
G4:
INC D
JMP ENDLOOP
G5:
INC E
JMP ENDLOOP
ENDLOOP:
INC BX ;指針移動(dòng) + 1
LOOP SELECT
JMP $
CODE ENDS
END START
題3
用主程序、子程序結(jié)構(gòu)實(shí)現(xiàn)判斷textdata(10個(gè)單元)中的數(shù)據(jù)是否為“0”~“F”的ASCII碼。若是,用十六進(jìn)制數(shù)覆蓋原單元,否則用0FFH覆蓋原單元。
DATA SEGMENT
TEXTDATA DB 03h,30h,35h,41h,46h,57h,78h,91h,01h,02h ;10個(gè)參數(shù)
RUSTDATA DB 10 DUP(?)
DO DB ?
NUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET TEXTDATA ;初始化指針
MOV SI,OFFSET RUSTDATA
MOV CX,10 ;設(shè)置計(jì)數(shù)器初值
SELECT:
MOV AL,[BX]
CALL CHECK
MOV [BX],AL
MOV [SI],AL
INC BX ;指針移動(dòng) + 1
INC SI ;指針移動(dòng) + 1
LOOP SELECT
JMP $
START ENDP
;子程序
CHECK PROC
CMP AL,'0'
JGE CEK ;判斷AL >= '0'
JMP WRONG
CEK:
CMP AL,'F'
JLE RIGHT ;判斷AL <= 'F'
JMP WRONG
RIGHT:
RET
WRONG:
MOV AL,0FFH
RET
CHECK ENDP
CODE ENDS
END START