![匯編語言程序設(shè)計課后答案_第1頁](http://file4.renrendoc.com/view7/M01/02/0F/wKhkGWbDgIqAKyAsAAIvHjZnkVQ314.jpg)
![匯編語言程序設(shè)計課后答案_第2頁](http://file4.renrendoc.com/view7/M01/02/0F/wKhkGWbDgIqAKyAsAAIvHjZnkVQ3142.jpg)
![匯編語言程序設(shè)計課后答案_第3頁](http://file4.renrendoc.com/view7/M01/02/0F/wKhkGWbDgIqAKyAsAAIvHjZnkVQ3143.jpg)
![匯編語言程序設(shè)計課后答案_第4頁](http://file4.renrendoc.com/view7/M01/02/0F/wKhkGWbDgIqAKyAsAAIvHjZnkVQ3144.jpg)
![匯編語言程序設(shè)計課后答案_第5頁](http://file4.renrendoc.com/view7/M01/02/0F/wKhkGWbDgIqAKyAsAAIvHjZnkVQ3145.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
匯編語言程序設(shè)計課后答案
第二章(更新完畢
1。在80X86微機(jī)的輸入輸出指令中,I/O端口號通常是由DX寄存器提供的,
但是有時也可以在指令中直接指定00——FFH的端口號。試問,可直接由指令指
定的I/O端口數(shù)~
解答:有256個~~書上有原話~~可以找到~~
2。有兩個16位字節(jié)1EE5H和2A3cH分別存放在80X86微機(jī)的存儲器的000B0H
和000B3H單元中,請用圖表示出它們在存儲器里的存放情況。
解答:如下圖.第一個絡(luò)子為000B0H字單元,注意,是字單元~~第五個格子為
000B3H字單元~
E5
TE
3c
2A-
唉,慚愧,學(xué)計算機(jī)的,竟然連個表格也做不好!
3.圖在書上,我就不畫了,太麻煩一直接答吧~
解答:30022H字節(jié)單元內(nèi)容:ABH30024H字節(jié)單元內(nèi)容:EFH
30021H字單元內(nèi)容:AB34H30022H字單元內(nèi)容:CDABH
4.對了,看這個的人.,肯定都有那本書,所以,以后我就不抄題目哈~一
解答:這三個物理地址都是3017AH,正好說明了不同的段地址和偏移地址對
應(yīng)同一物理地址~~
5.解答:CS+IP第一個字的物理地址為:OAAA40H
6.解答:圖,實在不知道怎么畫,待我想辦法一條件標(biāo)志OF,SF,ZF,CF,的值依次
為:0,0,0,0
7o下列操作可使用那些寄存器?
(1)加法和減法AX,BX,CX,DX,當(dāng)然,還有這幾個通用寄存器的高低
位了,如AH,AL,.等~~
(2)循環(huán)計數(shù)CX
(3)乘法和除法DX,AX,AH,AL
(4)保存段地址CS,DS,ES,SS
(5)表示運(yùn)算結(jié)果為OFLAGS
(6)將要執(zhí)行的指令地址IP
(7)將要從堆棧取出數(shù)據(jù)的地址BP,SP,SS
8o可以用來指示存儲器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP
9?一一對應(yīng):
5-A4-B2-C3-D12-E9-F11-G10-H13-18-J7-K6—L1-M15-N14-0
第三章
lo
(1)即尋
址
沒有
(2)直接尋
址
7237H
3)使用BX的寄存器尋
址
沒有
4)使用BX的間接尋
址
637DH
(5)使用BX的寄存器相對尋
址
0D5F0H
(6)基址變址尋
址
8E18H
(7)相對基址變
址
004FH
2。根據(jù)下列要求,寫出相應(yīng)的匯編指令。
(1)ADDDX,BX
⑵ADDAL,[BX][SI]
⑶ADD[BX][0B2H],CX
MOVAX,2A59HADD[0524H],AX
(5)ADDAL,0B5H
3o
(1)寄存器間接尋址
MOVBX,OFFSET[BLOCK][OAH]
MOVDX,[BX]
(2)寄存器相對尋址
MOVSI,OAH
MOVDX,[BLOCK][SI]
(3)基址變址尋址
MOVBX,BLOCK
MOVSI,OAH
MOVDX,[BX][SI]
沒人來看,還是要寫~~
4現(xiàn)有(DS)
=2000H,(BX)=O1OOH,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(201
03)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,試說明下列各
條指令執(zhí)行完后,AX寄存器的內(nèi)容。
(1)
MOVAX,1200H
1200H
(2)MOVAX,BX
01OOH
(3)MOVAX,[1200]
4C2AH
注意,是字單元??!
4)
MOVAX,[BX]
3412H
同上
5)
MOV1100[BX]
4C2AH
(6)MOVAX,[BX][SI]
7856H
(7)MOVAX,1100[BX][SI]
65B7H
5o
(1)7CD9H(2)1200H(3)6319H
6oMOVBX,2000H
LESDI,[BX]
MOVAX,ES:DI
7o轉(zhuǎn)向地址OBJ的值分別為:(1)
064DH(2)0691H(3)05E0H注意
有符號數(shù)的符號位~~
8o(1)
MOVAX,OABH
立即數(shù)尋
址
無物理地址
(2)
MOVAX,BX
寄存器尋
址
同上
(3)
MOVAX,[100]
直接尋
址
20100H
(4)MOV
AX,VAL
直接尋
址
20050H
(5)MOV
AX,[BX]
寄存器間接尋
址
20100H
(6)MOVAX,ES:
[BX]直接尋
址
21100H
(7)MOV
AX,[BP]寄存器
間接尋
址
20010H
(8)MOV
AX,[SI]
同
上
200A0H
(9)MOV
AX,[BX+10]寄存器相對
尋
址
20110H
(10)MOV
AX,VAL[BX]同
上
20150H
(11)MOV
AX,[BX][SI]基址變址
尋
址
201A0H
(12)MOV
AX,VAL[BX][SI]相對基相變址尋
址20
1F0H
9。
(1)的指令MOVAX,
[BX][OCH]MOV
ZREO,AX
(2)的指
令:MOVAX,ARRAY[BX]
MOVZREO,AX
10。MOVAX,TABLE是把符號地址TABLE里的內(nèi)容送到AX
里,指令執(zhí)行完后,(AX)=1234H
LEAAX,TABLE是把符號地址TABLE的
有效地址(這里是偏移量)送到指定寄存器AX里,指
令執(zhí)行完后,(AX)=0032H
llo執(zhí)行完指令后,(AX)=1EOOH
120LEAAX,CSTRING
MOVDL,AX
MOVDH,[AX+6]
13o這個,,圖,很麻煩了,所以就不畫了“大家可以看一下課本上P51—P53,
很清楚,看完了這道髭也會了~~~
140LESBX,[2000]
MOVAX,ES:[BX]
注意:一開始我寫的是:MOVAX,ES:[8000H],后來看到題目里要
求寫兩條指令,所以一條就不行了,就要畫蛇添足~~~
15運(yùn)算結(jié)
果
SF,ZF,CF,OF各位的值(從左
至右依次往下~)
(1)74D4H
0000
(2)A5C1H
1001
(3)4240
H
00
10
(4)0000
H
011
0
16o接上表~
(1)5D14
0000
(2)A870
1001
(3)D870
1000
(4)34E4
0010
17。
(l).MOVAX,Z;把Z送至ijAX
SUBAX,X;z-x
ADDAX,W;w+(z-x)
MOVZ,AX;結(jié)果保存在Z中
(2).MOVAX,R;R送至i」AX中
ADDAX,9;R+9
MOVBX,X;X送到BX中
ADDBX,6;X+6
ADDAX,BX;(R+9)+(X+6),結(jié)果保存在AX中
MOVBX,W;W送至BX中
SUBBX,AX;W-(R+9)-(X+6),連續(xù)減去兩個數(shù),相當(dāng)
于減去這兩個數(shù)的和~~
MOVZ,BX;最終結(jié)果送到Z中
⑶
MOVAX,W;把W送到AX
IMUL
X
W*X注意:低十六位保存在AX里,高十六位保存在DX里
MOVBX,Y;把Y送到BX里
ADDBX,6;Y+6
IDIVBXf
(W*X)/(Y+6)注意:商保存在AX里,余數(shù)保存在DX里
MOVZ,AX;把商送到z
中,
MOVR,DX;把余數(shù)送到
R中
(4)
MOVAX,W;把W送到AX中
SUBAX,X;w-x
CWD;把AX
中的十六位帶符號數(shù)擴(kuò)展成為32位,低十六位保存在AX中,高十六位保
;在DX中
MOVBX,5;把5送到BX中
IDIVBX;(W-X)
/5被除數(shù)為32位,除數(shù)為16位商為16位
IMULY;上一
步結(jié)果再乖以Y,積為32位
MOVBX,2;把2送到BX
中
IMULBX;上
一步乘法所得的積再乘以2,各為64位
MOVZ,EAX;把結(jié)果中低32
位放入Z雙字單元中
MOV[Z+4],EDX;把結(jié)果中高32位放入Z+4雙字單元中
2006-12-0711:47
39o圖,就不畫了,呵呵~~自己看一下課本,P10「~
40.?(1)00003100H(2)5100H(3)7100H
41o(1)目的地址:2004H內(nèi)容依次為:56HF4H23H98H
(2)目的地址:384cH內(nèi)容依次為:
91H34HF2H01H
(3)目的地址:寄存器,無物理地址~內(nèi)容依次
為:92H6DHA2H4CH
42。(1)PUSHAX
(SP)<------(SP)-2
(SP+1X-----(AH)(SP)<------(AL)
(2)POPESI
(ESIX-------((ESP)+3,(ESP)+2,(ESP)+1,(ESP))
(ESP)<(ESP)+4
(3)PUSH[BX]
(SP)<-------(SP)-2
(SP+IX-—([BX+1])(SP)<------([BX])
(4)PUSHAD
(ESP)<————(EAX)
(ESP-4)<------(ECX)
(ESP-8)<------(EDX)
(ESP-12X-------(EBX)
(ESP-16)<-------(ESP);這里指的是指令執(zhí)行前的ESP
(ESP-20)<--------(EBP)
(ESP-24)<-------(ESI)
(ESP-28)<--------(EDI)
(ESP)<-------(ESP)-32
(5)POPDS
(DS)<------((SP)+1,(SP))
(SP)<------(SP)+2
(6)PUSH4
(SP)<-------(SP)-2
(SP+1X-----0
(SP)<------4
43o(1)2CEFF93H(2)24B76A0H
(3)9090804H(4)6F13ADH
44o(1)OFFFFFFFCH(2)OFFFFFFF8H
(3)00000007H(4)
00000099H
45o(EAX)=0(EBX)=25d
46。(AX)=3d(DX)=7d
47OADDECX,EDX
ADDECX,ESI
MOVEDI,ECX
48oIMULBX,DX,100H執(zhí)行的操作是:
(BX)<------(DX)*100H
49o程序?qū)崿F(xiàn):
MOVAL,BL
CBW
IDIVCL
IMUL2
MOVDX,AX
50o
JMPDI是直接跳轉(zhuǎn),執(zhí)行的操作是:(IP)<----(IP)+(DI)
JMP[DI]是間接跳轉(zhuǎn),執(zhí)行的操作是:(IP)<——(IP)+([DI])跳轉(zhuǎn)到DI
中所指向的內(nèi)存單元中的指令地址~
51。假設(shè)數(shù)組名為NUMBERS,程序如下~
MOVBX,0;后面用到~
MOVCX,100H;把循環(huán)次數(shù)放入ex
MOVAL,42H
MOVSL0;初始化SI
;CHECK用來實現(xiàn)查找功能~
CHECK:CMPAL,NUMBERS[SI]
INCSI
JBSTORE1;大于42H的數(shù)的個數(shù)存入UP
JAST0RE2;小于42H的的數(shù)的個數(shù)存入DOWN中~
LOOPCHECK;相等繼續(xù)循環(huán)~
STORE1INCBL;找到一個大于42的數(shù),BL值增加
MOVUP,BL
LOOPCHECK
ST0RE2INCBH
MOVDOWN,BH
LOOPCHECK
第五章答案
本章程序在MASMV5.0及其以上版本編譯通過,如果因為版本過低無法編譯,可以
在www.movsd.com(國外權(quán)威的匯編
語言英文網(wǎng)站)找到下載最新版本的MASM編譯器地址,目前的最新版本為MASM
V9.0,也可以去www.aogosoft.com
(AOGO匯編論壇)下載MASMPLUSVI.2版本,以上兩種方法選其一即可.
1.從屏幕上輸入小寫字母,轉(zhuǎn)化為大寫字母輸出
(解法1)
DATASEGMENT
MESSAGEDB"ENTERASTRING:",OAH,ODH,'$'
MAXLENGTHDB50,?,50DUP(?);每次最多可以輸入49個字符
DATAENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE
START:
MOVAX,DATA
MOVDS,AX
LEADX,MESSAGE;輸出ENTERASTRING
MOVAH,09H
INT21H
LEADX,MAXLENGTH;輸入字符串
MOVAH,OAH;鍵盤輸入到緩沖區(qū),DS:DX=緩沖區(qū)首址
INT21H;(DS:DX)=緩沖區(qū)最大字符數(shù),(DS:DX+1)=實際輸入的字符
數(shù)
MOVAH,02H;輸出回車換行
MOVDL,OAH
INT21H
MOVAH,02H
MOVDL,ODH
INT21H
MOVCL,MAXLENGTH+1;把字符的實際長度放入寄存器CL
MOVCH,0
MOVBH,02H
LEASI,MAXLENGTH+2;取字符串的基地址放入SI
XUN:
MOVAL,[SI]
CMPAL,'Z'
JBESI;小于等于‘2'轉(zhuǎn)移
JMPS3
SI:CMPAL,'A'
JAEDA;大于等于'A'轉(zhuǎn)移
JMPOUTPUT
DA:ADDAL,20H
JMPOUTPUT
S3:CMPAL,'z';小于等于小Z轉(zhuǎn)移
JBES4
S4:CMPAL,'a';大于等于小a轉(zhuǎn)移
JAEXIAO
JMPOUTPUT
XIAO:
SUBAL,32
JMPOUTPUT
OUTPUT:
MOVDL,AL
MOVAH,02H;顯示輸出
INT21H
INCSI
LOOPXUN
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(解法2)
;將輸入的小寫字母轉(zhuǎn)化為大寫字母輸出,輸入回車結(jié)束
CODESEGMENT
ASSUMECS:CODE
BEGIN:
MOVAH,01H
INT21H
CMPAL,ODH;ASCIIOFCARRIAGERETURN
JEEXIT
CMPAL,61H;ASCIIOF,a'
JBSTOP
CMPAL,7AH;ASCIIOF'z'
JASTOP
SUBAL,20H
STOP:
MOVDL,AL
MOVAH,2
INT21H
JMPBEGIN
EXIT:
MOVAH,4CH
INT21H
RET
CODEENDS
ENDBEGIN
2.輸入一個字符,找出它的前導(dǎo)字符和后續(xù)字符,并按順序顯示這三個字符.
(解法1)
CODESEGMENT
MAINPROCFAR
ASSUMECS:CODE
START:
PUSHDS
XORAX,AX
PUSHAX
MOVAH,01H
INT21H
CMPAL,61H
JBEXIT
CMPAL,7AH
JAEXIT
MOVCL,AL
DECAL
MOVDL,AL
MOVAH,O2H
INT21H
MOVDL,CL
MOVAH,02H
INT21H
ANDAL,O1H
INCCL
MOVDL,CL
MOVAH,O2H
INT21H
EXIT:
MOVAX,4C00H
INT21H
RET
MAINENDP
CODEENDS
ENDSTART
(解法2)
.MODELSMALL
.STACK200H
.DATA
imsgdb'Input輸入提示信息
omsgdbODh,OAh,'Output:$';輸出提示信息
stringdb3dup(0),'$';存放三個字符
.CODE
START:
movax,?data
movds,ax
leadx,imsg
movah,9
int21h
movah,1
int21h
leadi,string
decal
movex,3
s:
mov[di],al
incdi
incal
loops
leadx,omsg
movah,9
int21h
leadx,string
movah,9
int21h
MOVAH,07H
INT21H
MOVAX,4C00H
INT21H
ENDSTART
3.將AX寄存器中的16位數(shù)分成4組,每組4位,然后把這四組數(shù)分別放在
AL,BL,CL,DL中
.MODELSMALL,C
.CODE
.STARTUP
MOVAX,3456H
MOVBX,AX
MOVCL,4
ROLAX,CL
MOVBX,AX
ANDAL,OFH;AL中是15,14,13,12
ROLBX,CL
MOVDX,BX
ANDBL,OFH;BL中是11,10,9,8
ANDAH,OFH
MOVCH,AH;CH中是7,6,5,4
MOVCL,CH
ANDDH,OFH;DH中是3,2,1,0
MOVDL,DH
.EXIT0
END
4.試編寫一程序,要求比較兩個字符串STRING1和STRING2所含字符是否相同,
若相同則顯示'MATCH',若不相同則顯
示'NOTMATCH).
.MODELSMALL
.DATA
STRING1DB"LDSKFJSLDKF”
LENG1EQU$-STRINGl
STRING2DB"LDSKFJSLDKP”
LENG2EQU$-STRING2
MSG1DB"MATCH”,24H
MSG2DB"NOTMATCH”,24H
.CODE
MOVAX,@DATA
MOVDS,AX
MOVES,AX
MOVBX,LENG1
MOVCX,LENG2
CMPBX,CX
JNZNOT_MATCH
LEASI.STRINGl
LEADI,STRING2
CLD
REPZCMPSB
JZ_MATCH
NOT?MATCH:
LEADX,MSG2
MOVAH,09H
INT21H
JMP_EXIT
_MATCH:
LEADX,MSG1
MOVAH,09H
INT21H
_EXIT:
MOVAH,07H
INT21H
MOVAX,4C00H
INT21H
END
5.要求能從鍵盤接收一個個位數(shù),然后響鈴N次(響鈴的ASCII碼為07)
.MODELSMALL
.DATA
MSGDB"YOURINPUTISNOT1-9!”,24H
.CODE
.STARTUP
MOVAH,0
INT16H;接收一個鍵盤輸入
CMPAL,31H
JBERROR
CMPAL,39H
JAERROR
MOVCL,AL
SUBCL,30H
CYCLE:
MOVDL,7
MOVAH,09H
INT21H
MOVAH,07H;按一下鍵就響一下鈴聲
INT21H
LOOPCYCLE
JMP_EXIT
ERROR:
LEADX,MSG
MOVAH,09H
INT21H
MOVAH,07H
INT21H
_EXIT:
.EXIT0
END
6.編寫程序,將一個包含有20個數(shù)據(jù)的數(shù)組M分成兩個數(shù)組,正數(shù)數(shù)組P和負(fù)數(shù)
數(shù)組N,并分別把這兩個數(shù)組中數(shù)據(jù)的
個數(shù)顯示出來.
.MODELSMALL,C
.DATA
INDEXDB12,-20,4,05H,11H,2AH,T1,2,3,09H
DB-3,0,-9,44H,32H,33H,34H,-5,40H,22H
PDB0,20DUP(O);存放正數(shù)
NDB0,20DUP(O);存放負(fù)數(shù)
.CODE
DISPLAYPROCNEARUSESAX
ANDAH,OFH
.IFAH>=OAH&&AH<=OFH
ADDAH,07H
.ENDIF
ADDAH,30H
MOVDL,AH
MOVAH,02H
INT21H
MOVAH,07H
INT21H
RET
DISPLAYENDP
.STARTUP
LEADI,P+1
LEASI,N+1
LEABX,INDEX
MOVCX,14H
CYCLE:
CMPBYTEPTR[BX],0
JGNOSIGN
INCAL;AL中存放負(fù)數(shù)
MOVDL,BYTEPTR[BX]
MOVBYTEPTRDS:[DI],DL
INCDI
INCBX
LOOPCYCLE
NOSIGN:
INCAH;AH中存放正數(shù)
MOVDL,BYTEPTR[BX]
MOVBYTEPTRDS:[SI],DL
INCSI
INCBX
LOOPCYCLE
MOVP,AH
MOVN,AL
CALLDISPLAY
MOVAH,AL
CALLDISPLAY
.EXIT0
END
7.試編制一個匯編語言程序,求出首地址為DATA的100D字?jǐn)?shù)組中的最小偶數(shù),
并把它存放在AX中.
datareasegment
datadw10,2,4,8,7,7,69,65,55,89,95
dw25,39,77,88,25,1,47,88,8,8,77,88,22
count=($-data)/2
numdwOffeeh
datareaends
codesegment
mainprocfar
assumecs:code,ds:datarea
pushds
movax,0
pushax
begin:
movax,datarea
movds,ax
movbl,2
movex,count
leasi,data
A:
movax,[si]
movdx,ax
divbl
empah,0
jnecircle
empdx,num
jbB
circle:
addsi,2
lopa:
loopA
exit:
movax,num
ret
B:
movnum,dx
jmplopa
mainendp
codeends
end
8.把AX中存放的16位二進(jìn)制數(shù)K看作是8個二進(jìn)制的“四分之一字節(jié)試編寫
一程序,要求數(shù)一下值為3(即11B)的四
分之一字節(jié)數(shù),并將該數(shù)在終端上顯示出來.
MOVCX,8
MOVDL,0
NEXT3:RORAX,1
JNCNEXT1
RORAX,1
JNCNEXT2
INCDL
NEXT2:LOOPNEXT3
ADDDL,30H
MOVAH,2
INT21H
MOVAH,4CH
INT21H
NEXT1:RORAX,1
JMPNEXT2
9.試編寫一匯編語言程序,求出首地址為DATA的100D字?jǐn)?shù)組中的最小偶數(shù),并把
它存放在AX中.
.MODELSMALL,C
.DATA
_DATADW100DUP(?)
.CODE
.STARTUP
LEASI,_DATA
MOVAX,fsi]
MOVCX,100
CYCLE:
ADDSI,2
.IFAX<[SI]
MOVAX,[SI]
.ENDIF
LOOPCYCLE
.EXIT0
10.設(shè)有一段英文,其字符變量名為ENG,并以$字符結(jié)束,試編寫一程序,查對單
詞SUN在該文中的出現(xiàn)次數(shù),并以格式
“SUN****"顯示出次數(shù).
.MODELSMALL
.386
.DATA
ENGDB'SUN','SUNJAVA),24H
MESSAGEDB'SUN:','$'
.STACK100H
.CODE
MAINPROCFAR
START:
PUSHDS
ANDAX,0
PUSHAX
MOVAX,@DATA
MOVDS,AX
MOVAX,OH
MOVSI,1H
SUBSI1:
SUBSI,1H
SUBS12:
SUBSI,1H
COMPARES:
ADDSI,1H
MOVDL,ENG[SI]
CMPDL,24H
JEPRINT
CMPDL,53H
JNECOMPARES
COMPAREU:
ADDSI,1H
MOVDL,ENG[SI]
CMPDL,55H
JNESUBSI2
COMPAREN:
ADDSI,1H
MOVDL,ENG[SI]
CMPDL,4EH
JNESUBSII
INCAX
JMPCOMPARES
PRINT:
LEADX,MESSAGE
PUSHAX
MOVAH,09H
INT21H
POPAX
CALLSHOWNUMBER
EXIT:
RET
MAINENDP
SHOWNUMBERPROCNEAR
COVERNUM:
DAA
MOVDX,AX
MOVCL,4H
SHOW:
ROLDX,4H
PUSHDX
ANDDX,OFH
ADDDX,30H
MOVAH,O2H
INT21H
POPDX
LOOPSHOW
RET
SHOWNUMBERENDP
ENDSTART
11.從鍵盤輸入一系列以$為結(jié)束符的字符串,然后對其中的非數(shù)字字符計數(shù),并
顯示出計數(shù)結(jié)果.
.MODELSMALL
.386
.CODE
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVCX,0
INPUT:
MOVAH,1H
INT21H
COMPARE:
CMPAL,24H
JEPRINT
CMPAL,30H
JLADDCOUNT
CMPAL,39H
JGADDCOUNT
ADDCOUNT:
ADDAX,1H
JMPINPUT
PRINT:
CALLSHOWNUMBER
EXIT:RET
MAINENDP
SHOWNUMBERPROCNEAR
COVERNUM:
DAA
MOVDX,AX
MOVCL,2H
SHOW:
ROLDL,4H
PUSHDX
ANDDL,OFH
ADDDL,30H
MOVAH,02H
INT21H
POPDX
LOOPSHOW
RET
SHOWNUMBERENDP
ENDSTART
12.有一個首地址為MEM的100D字?jǐn)?shù)組,試編制程序刪除數(shù)組中所有為零的項,
并將后續(xù)項向前壓縮,最后將數(shù)組的剩
余部分補(bǔ)上零.
.modelsmall
.386
.stack100H
.data
memdw
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,4
5,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
andax,0
pushax
movax,@data
movds,ax
movax,OH
movbx,64H
movex,64H
movsi,OFFFEH
repeat:
ADDsi,2H
cmpMEMLsi],OH
JEcalls
looprepeat
calls:
INCax
callsort
cmpax,1H
JElastValue
DECex
jmprepeat
exit:
ret
lastValue:
movmem[bx],OH
DECex
jmprepeat
MAINENDP
sortPROCNEAR
pushex
pushsi
subsi,2H
s:
addsi,2H
movdx,mem[si]
movmem[si+2],dx
loops
return:
popsi
popex
ret
sortENDP
ENDstart
13.在STRING到STRING+99單元中存放著一個字符串,試編制一程序測試該字符
串中是否存在數(shù)字.如有,則把CL的第
5位置1,否則將該位置0.
DSEGSEGMENT
ADW?
BDW?
DSEGENDS
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:CSEG,DS:DSEG
START:PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
BEGIN:
MOVAX,A
MOVAX,B
XORAX,BX
TESTAX,0001
JZEXIT
XCHGBX,A
MOVB,BX
JMPEXIT
CLASS:
TESTBX,0001
JZEXIT
INCB
INCA
EXIT:RET
MAINENDP
CSEGENDS
ENDSTART
14.在首地址為TABLE的數(shù)組中按遞增次序存放著100H個16位補(bǔ)碼數(shù),試編寫一
個程序把出現(xiàn)次數(shù)最多的數(shù)及其出現(xiàn)
次數(shù)分別存放在AX和CX中.
DATASEGMENT
TABLEDW100HDUP(?)
MDATADW?;存放出現(xiàn)次數(shù)最多的數(shù)
COUNTDW0;存放出現(xiàn)次數(shù)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,100H
MOVDI,0;DI為數(shù)組TABLE的指針
NEXT:
MOVDX,0
MOVSI,0
MOVAX,TABLE[DI]
MOVCX,1OOH
COMP:
CMPTABLE[SI],AX
JNE_ADDR
INCDX
_ADDR:
ADDSI,2
LOOPCOMP
CMPDX,COUNT
JLECHANG
MOVCOUNT,DX
MOVMDATA,AX
CHANG:
ADDDI,2
DECBX
JNZNEXT
MOVCX,COUNT
MOVAX,MDATA
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
15.數(shù)據(jù)段中已定義了一個有n個字?jǐn)?shù)據(jù)的數(shù)組M,試編寫一程序求出M中絕對值
最大的數(shù),把它放在數(shù)據(jù)段的M+2n單
元中,并將該數(shù)的偏移地址存放在M+2(n+l)單元中.
DSEGSEGMENT
XDW-4
FXDW?
DSEGENDS
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:CSEG,DS:DSEG
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
BEGIN:
CMPX,5
JGAO
CMPX,-5
JLAO
MOVBX,1
SUBBX,X
MOVFX,BX
RET
AO:
MOVFX,0
RET
MAINENDP
CSEGENDS
ENDSTART
16.在首地址為DATA的字?jǐn)?shù)組中,存放了100H個16位補(bǔ)碼數(shù),試編寫一程序,求
出它們的平均值放在AX寄存器中;并求
出數(shù)組中有多少個數(shù)小于此平均值,將結(jié)果放在BX寄存器中.
.MODELSMALL
.STACK200H
.DATA
DA_TADW100HDUP(?)
.CODE
.STARTUP
XORAX,AX
XORBX,BX
XORDX,DX
MOVCX,100H
LEASI,DA_TA
CYCLE:
ADDAX,[SI]
ADCDX,0
INCSI
INCSI
DECCX
CMPCX,0
JNZCYCLE
MOVCX,100H
DIVCX;計算平均值,存放在AX中.
LEASI,DA_TA
COMPARE:
CMPAX,[SI]
JANEXT;計算小于AX的值,其個數(shù)存放在BX中
INCBX
NEXT:
INCSI
INCSI
DECCX
CMPCX,0
JNZCOMPARE
.EXIT0
END
17.試編制一個程序,把AX中的16進(jìn)制數(shù)轉(zhuǎn)化為ASCII碼,并將對應(yīng)的ASCII碼
依次存放到MEM數(shù)組中的四個字節(jié)中.例
如:當(dāng)(AX)=2A49H時,程序執(zhí)行完后,MEM中的4個字節(jié)內(nèi)容為39H,34H,41H,32H.
;MODE=DOS
DATASEGMENT
SOURCEDW2A49H
MEMDB4DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,SOURCE
LEABX,MEM
MOVCX,4
LB:MOVAX,DX
ANDAX,OOOFH
CMPAL,10
JCAD
ADDAL,7
AD:ADDAL,30H
MOV[BX],AL
INCBX
SHRDX,1
SHRDX,1
SHRDX,1
SHRDX,1
LOOPLB
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
18.把0-100D之間的30個數(shù)存入以GRADE為首地址的30個字?jǐn)?shù)組中,GRADE+i
表示學(xué)號為i+1的學(xué)生成績.另一個數(shù)組
RANK為30個學(xué)生的名次表,其中RANK+i的內(nèi)容是學(xué)號為i+1的學(xué)生的名次.編
寫一程序,根據(jù)GRADE中的學(xué)生成績,將
學(xué)生名次填入RANK數(shù)組中.(提示:一個學(xué)生的名次等于成績高于這個學(xué)生的人
數(shù)加1)
DSEGSEGMENT
GRADEDW30DUP(?)
RANKDW30DUP(O)
DSEGENDS
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:CSEG,DS:DSEG
START:PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX
BEGIN:MOVDI,0
MOVCX,30
L00P1:PUSHCX
MOVCX,30
MOVSI,0
MOVAX,GRADE[DI]
MOVDX,0
L00P2:CMPGRAD[SI],AX
JBEGOON
INCDX
GOON:ADDSL2
LOOPL00P2
POPCX
INCDX
MOVRANK[DI],DX
ADDDI,2
LOOPL00P1
RET
MAINENDP
CSEGENDS
ENDSTART
19.已知數(shù)組A包含15個互不相等的整數(shù),數(shù)組B包含20個互不相等的整數(shù).試
編制一程序,把既在A中又在B中出現(xiàn)的
整數(shù)存放于數(shù)組C中。
;#Mode=DOS
.MODELSMALL,C
.DATA
ADB15DUP(?)
BDB20DUP(?)
_CDB15DUP(?)
.CODE
.STARTUP
LEASI,A
LEABX,B
LEADI,_C
MOVCX,OFH;控制外層循環(huán)
MOVDX,14H;控制內(nèi)層循環(huán)
CYCLE1:
MOVAX,[SI]
CYCLE2:
CMPAX,DS:[BX]
JNENEXT
MOVDS:[DI],AX
INCDI
NEXT:
INCBX
DECDX
JNZCYCLE2
MOVDX,14H
INCSI
DECCX
LOOPCYCLE1
.EXIT0
END
20.設(shè)在A,B,C單元中分別存放著三個數(shù).若三個數(shù)都不是0,則求出三數(shù)之和并
存放在D單元中;若其中有一個數(shù)為0,
則把其它兩個單元也清零.試編寫此程序.
;#Mode=DOS
.MODELSMALL,C
.DATA
ADB?
BDB?
_CDB?
DDW?
.CODE
.STARTUP
MOVAL,A
MOVBL,B
MOVCL,_C
MOVAH,0
.IFAL!=O&&BL!=O&&CL!=0
ADDAL,BL
ADCAH,0
ADDAL,CL
ADCAH,0
MOVD,AX
.ELSEIFAL==0|BL==O||CL==0
XORAL,AL
MOVA,AL
MOVB,AL
MOV_C,AL
.ENDIF
.EXIT0
END
21.試編寫一程序,要求比較數(shù)組ARRAY中的三個16位補(bǔ)碼數(shù),并根據(jù)比較結(jié)果在
終端上顯示如下信息:
(1)如果三個數(shù)都不相等則顯示0;
(2)如果三個數(shù)有兩個相等則顯示1;
(3)如果三個數(shù)都相等則顯示2.
;#Mode=DOS
.MODELSMALL,C
.DATA
;只要修改此處ARRAY,就可以看到三種不同的運(yùn)行結(jié)果了。
ARRAYDW0,1,2
_ZERODB'0$'
_ONEDB'1$'
_TWODB'2$'
.CODE
.STARTUP
LEASI,ARRAY
MOVAX,[SI]
MOVBX,[SI+2]
MOVCX,[SI+4]
.IFAX!=BX&&AX!=CX&&BX!=CX
LEADX,_ZERO
.ELSEIFAX==BX&&AX==CX&&BX==CX
LEADX,_TW0
.ELSE
LEADX,_ONE
.ENDIF
MOVAH,09H
INT21H
MOVAH,07H
INT21H
.EXIT0
END
22.從鍵盤輸入一系列字符(以回車鍵結(jié)束),并按字母,數(shù)字及其它字符分類計數(shù),
最后顯示出這三類的計數(shù)結(jié)果.
23.已定義了兩個整數(shù)變量A和B,試編寫程序完成下列功能:
(1)若兩個數(shù)中有一個是奇數(shù),則將奇數(shù)存入A中,偶數(shù)存入B中;
⑵若兩個數(shù)均為奇數(shù),則將兩數(shù)均加1后存回原變量;
(3)若兩個數(shù)均為偶數(shù),則兩個變量均不改變.
;#Mode=DOS
.MODELSMALL,C
.DATA
ADB23H
BDB48H
.CODE
.ST
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 探索小學(xué)生語言敏感度的形成與提升
- 網(wǎng)絡(luò)時代下學(xué)生審美情感的引導(dǎo)與教育
- 車間管理中的創(chuàng)新技術(shù)應(yīng)用案例分析
- 新時代的教育技術(shù)創(chuàng)新與應(yīng)用
- 小學(xué)生健康成長的醫(yī)學(xué)與科學(xué)教育
- 軟件助力企業(yè)構(gòu)建全面的安全教育培訓(xùn)體系
- 校園火災(zāi)應(yīng)急處理的國際比較研究
- 預(yù)防近視教育先行
- 小學(xué)生自然科學(xué)教學(xué)現(xiàn)狀及改進(jìn)策略分析
- 緊急情況下如何快速響應(yīng)?-掌握常見醫(yī)療急救設(shè)備的使用方法
- 2025版茅臺酒出口業(yè)務(wù)代理及銷售合同模板4篇
- 2025年N1叉車司機(jī)考試試題(附答案)
- 《醫(yī)院財務(wù)分析報告》課件
- 2024年考研政治試題及答案
- 2025年初級社會工作者綜合能力全國考試題庫(含答案)
- 2024年濰坊護(hù)理職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 《鉗工基本知識》課件
- 2022-2023學(xué)年五年級數(shù)學(xué)春季開學(xué)摸底考(四)蘇教版
- 【螞蟻?!?024中國商業(yè)醫(yī)療險發(fā)展研究藍(lán)皮書
- 授信審批部工作計劃及思路
- 財務(wù)管理學(xué)(第10版)課件 第3章 財務(wù)分析
評論
0/150
提交評論