IBMPC汇编语言程序的设计 第二版部分复习题答案第5章.docx
- 文档编号:11339786
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:15
- 大小:17.20KB
IBMPC汇编语言程序的设计 第二版部分复习题答案第5章.docx
《IBMPC汇编语言程序的设计 第二版部分复习题答案第5章.docx》由会员分享,可在线阅读,更多相关《IBMPC汇编语言程序的设计 第二版部分复习题答案第5章.docx(15页珍藏版)》请在冰点文库上搜索。
IBMPC汇编语言程序的设计第二版部分复习题答案第5章
5.1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来
.modelsmall
.stack100H
.code
mainprocfar
Start:
pushdx
movax,0
pushax
movah,01H
int21H
cmpal,61H
jllop1
cmpal,7BH
jgelop1
subal,20H
movdl,al
lop1:
movah,2
int21H
ret
Endstart
5.2编写一个程序,从键盘接受一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符.
.modelsmall
.386
.code
MAINPROCFAR
start:
pushds
subax,ax
pushax
input:
movah,7H
int21H
cmpe:
cmpal,20H
JE exit
cmpal,61H
JL input
cmpal,7AH
JG input
print:
subal,01H
movdl,al
movah,02H
int21H
addal,01H
movdl,al
movah,02H
int21H
addal,01H
movdl,al
movah,02H
int21H
;输出换行回车
movdl,0AH
movah,02H
int21H
jmpinput
exit:
ret
MAINENDP
ENDstart
5.3将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL、DL中。
.modelsmall
.data
xDB4dup(?
)
.stack100H
.code
MAINPROCFAR
start:
pushds
andax,00H
pushax
movax,1234H
movcx,04H
movsi,00H
lop:
pushcx
mov cl,04H
rolax,cl
pushax
andal,0FH
movBYTEPTRx[si],al
popax
popcx
addsi,2
Looplop
moval,[X]
movbl,[X+2]
movcl,[X+4]
movdl,[X+6]
print:
movah,02H
int21H
movdl,al
movah,02H
int21H
movdl,bl
movah,02H
int21H
movdl,cl
movah,02H
int21H
exit:
ret
MAINENDP
ENDstart
5.4编写一个程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示"MATCH",若不同在显示:
"NOMATCH"。
.modelsmall
.data
STRING1DB'Imuststudyhard'
STRING2DB'Imuststudyhard'
X DB'MATCH.$'
Y DB'NOMATCH.$'
.stack100H
.code
mainprocfar
Start:
pushdx
movax,0
pushax
movax,@data
movds,ax
moves,ax
leasi,STRING1
leadi,STRING2
cld
movcx,(string2-string1)/typeSTRING2
ret
Endstart
5.5编写一个程序,要求能从键盘接收一个个位数N,然后响铃N次,(响铃的ASCII为07)。
这题比较有意思,呵呵。
modelsmall
.code
mainprocfar
start:
pushds
subax,ax
pushax
input:
movah,01H
int21H
cmpal,20H
je exit
cmpal,30H
jleinput
cmpal,3AH
jgeinput
subal,30H
movcx,ax
andcx,0FFH
lop:
movdl,07H
movah,2H
int21H
looplop
jmpinput
exit:
ret
mainendp
endstart
5.6编写程序,将一个包含有20个数据的数组M分成两个数组:
正数数组和负数数组N,并分别把这两个数组中的数据个数显示出来。
.modelsmall
.386
.data
MDB1,2,3,4,5,6,7,8,9,10,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10
PDB20dup(?
)
NDB20dup(?
)
.code
MAINPROCFAR
start:
PUSHds
AND ax,0
PUSHax
MOV ax,@data
mov ds,ax
MOV bx,0
MOV si,0
MOV di,0
MOV cx,20D
cmpe :
CMP M[bx],0
JL ifLow
hight:
MOV al,byteptrM[bx]
MOV byteptrP[si],al
inc si
JMP commonContrl
ifLow:
MOV al,byteptrM[bx]
MOV byteptrN[di],al
INC di
commonContrl:
INC bx
loopcmpe
mov ax,si
callshowNumber
callprintCR
mov ax,di
callshowNumber
exit:
ret
MAINENDP
;;;;;;;;;;;;;;;;;注意,ShowNumber这个子过程有问题,请自行修改;;;;;;;;;;;;;;;;
showNumberPROCNEAR
covernum:
DAA
MOV dx,ax
MOV cl,2H
show:
ROL dl,4H
pushdx
AND dl,0fH
ADD dl,30H
MOV ah,02H
int 21H
pop dx
loopshow
ret
showNumberENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
printCRPROCNEAR
movdl,0aH
movah,02H
int21H
movdl,0dH
movah,02H
int21H
ret
printCRENDP
endstart
5.7编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它放在AX中。
此题根据题意要求应该使用完整汇编格式,因为精简格式也使用DATA....
dataaresegment
DATADW3322H,4555H,200H,3544H,1245H
num DB($-DATA)/2
dataareends
codesegment
assumecs:
code,ds:
dataare
MAINPROCFAR
start:
pushds
mov ax,0H
pushax
mov ax,dataare
mov ds,ax
mov dx,0H ;偶数数量计数
mov cx,Wordptr[num]
mov si,0H
isO:
mov bx,WORDPTRDATA[si]
shr bx,1H
jnc addDX
jmp commonControl
addDX:
ADD dx,1H
cmp dx,1H
je firstAXValue
compare:
mov bx,WORDPTRDATA[si]
cmp bx,ax
jge commonControl
mov ax,bx
commonControl:
ADD si,2H
loopisO
jmp exit
firstAXvalue:
movax,WORDPTRDATA[si]
jmpcompare
exit:
ret
MAINENDP
codeends
ENDstart
5.8没有做。
。
5.9编写一个汇编语言程序,要求从键盘上接收一个思维的十六位进制数,并在终端上显示与它等值的二进制数。
.modelsmall
.386
.code
mainprocfar
start:
pushds
mov ax,0
pushax
mov ax,0
mov cx,4
mov dx,0
input:
mov ah,1H
int 21H
cmp al,30H
jl input
cmp al,39H
jle s
cmp al,61H
jl input
cmp al,66H
jg input
sub al,27H
s:
sub al,30H
add dl,al
cmp cx,1H
je f
rol dx,4
f:
loopinput
exit:
callprint
ret
mainendp
printprocnear
movcx,10H
p:
rol dx,1
pushdx
and dx,1
add dx,30H
mov ah,2
int 21H
pop dx
loopp
ret
printendp
endstart
5.10设有一段英文,其变量字符名为ENG,并以$字符结束。
试编写一程序,查对单词SUN在该文中的出现次数,并以格式"SUNXXXX"显示出次数。
.modelsmall
.386
.data
ENG db'SUN'sSUNJAVA',24H ;;;;24H=$
MESSAGEdb'SUN:
','$'
.stack100H
.code
MAINPROCFAR
start:
PUSHDS
AND AX,0
PUSHAX
MOV AX,@data
MOV DS,AX
;------------------------
MOV AX,0H
MOV SI,1H
subSI1:
SUB SI,1H
subSI2:
SUB SI,1H
compareS:
ADD SI,1H
MOV DL,ENG[SI]
CMP DL,24H
JE print
CMP DL,53H
JNE compareS
compareU:
ADD SI,1H
MOV DL,ENG[SI]
CMP DL,55H
JNE subSI2
compareN:
ADD SI,1H
MOV DL,ENG[SI]
CMP DL,4EH
JNE subSI1
INC AX
JMP compares
print:
LEA DX,MESSAGE
PUSHAX
MOV AH,09H
INT 21H
POP AX
callshowNumber
exit:
ret
MAINENDP
;;;;;;;;;;;;;;;;;注意,ShowNumber这个子过程有问题,请自行修改;;;;;;;;;;;;;;;;
showNumberPROCNEAR
covernum:
DAA
MOV dx,ax
MOV cl,4H
show:
ROL dx,4H
pushdx
AND dx,0fH
ADD dx,30H
MOV ah,02H
int 21H
pop dx
loopshow
ret
showNumberENDP
ENDstart
5.11从键盘输入一系列以$为结束副的字符串,然后对其中的非数字字符计数,并显示出计数结果。
.modelsmall
.386
.code
MAINPROCFAR
start:
pushds
mov ax,0
pushax
mov cx,0
input:
mov ah,1H
int 21H
compare:
cmp al,24H
je print
cmp al,30H
jl addCount
cmp al,39H
jg addCount
addCount:
add ax,1H
jmp input
print:
callshowNumber
exit:
ret
MAINENDP
;;;;;;;;;;;;;;;;;注意,ShowNumber这个子过程有问题,请自行修改;;;;;;;;;;;;;;;;
showNumberPROCNEAR
covernum:
DAA
MOV dx,ax
MOV cl,2H
show:
ROL dl,4H
pushdx
AND dl,0fH
ADD dl,30H
MOV ah,02H
int 21H
pop dx
loopshow
ret
showNumberENDP
ENDstart
5.12有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。
.modelsmall
.386
.stack100H
.data
memdw12,0,0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,12,0,0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,45,7,5,1,2,0,2,4,0,2
.code
MAINPROCFAR
start:
pushds
and ax,0
pushax
mov ax,@data
mov ds,ax
;----------------------
mov ax,0H
mov bx,64H
mov cx,64H
mov si,0FFFEH
repeat:
ADD si,2H
cmp MEM[si],0H
JE calls
looprepeat
calls:
INC ax
callsort
cmp ax,1H
JE lastValue
DEC cx
jmp repeat
exit:
ret
lastValue:
mov mem[bx],0H
DEC cx
jmp repeat
MAINENDP
sortPROCNEAR
pushcx
pushsi
sub si,2H
s:
add si,2H
mov dx,mem[si]
mov mem[si+2],dx
loops
return:
popsi
popcx
ret
sortENDP
ENDstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBMPC汇编语言程序的设计 第二版部分复习题答案第5章 IBMPC 汇编语言 程序 设计 第二 部分 复习题 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)