版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一章 微型計(jì)算機(jī)概論1.12 以下十進(jìn)制數(shù)對于的八位二進(jìn)制補(bǔ)碼是怎樣表示的?(1)102102補(bǔ)=01100110B(2)3434補(bǔ)=00100010B(3)9696補(bǔ)=01100000B(4)-100-100原=11100100B-100反=10011011B-100補(bǔ)=10011100B(5)-64-64原=11000000B-64反=10111111B-64補(bǔ)=11000000B(6)00補(bǔ)=00000000B1.14 為什么我們會用16進(jìn)制表示數(shù)據(jù)?請將下列十進(jìn)制數(shù)轉(zhuǎn)換成對應(yīng)的十六進(jìn)制數(shù)。(1)354=162H(2)102=66H(3)64=40H(4)256=100H(5)127=
2、7FH(6)32=20H(7)135=87H(8)67=43H1.15 現(xiàn)有如下十進(jìn)制數(shù),將其轉(zhuǎn)換成對應(yīng)的二進(jìn)制數(shù)。(1)34.5=10010.1B(2)20.125=10100.001B(3)17.12=10001.0001B(4)100.4=1100100.01B(5)50.05=110010.00001B(6)19.3=10011.01B1.16 將下列十六進(jìn)制數(shù)表示成二進(jìn)制數(shù)。(1)0FFH=1111 1111B(2)34H=0011 0100B(3)67H=0110 0111B(4)4EH=0100 1110B(5)90H=1001 0000B(6)4DH=0100 1101B(7)
3、5AH=0101 1010B1.17 請寫出以下補(bǔ)碼表示的二進(jìn)制數(shù)真值。X補(bǔ)=1000 0000 0000 0000BX=-32768Y補(bǔ)=1111 1111 1111 1111BY反=1111 1111 1111 1110BY原=1000 0000 0000 0001BY=-1Z補(bǔ)=0111 1111 1111 1111BZ=32767W補(bǔ)=1111 0000 0000 0000BW反=1110 1111 1111 1111BW原=1001 0000 0000 0000BW=-4096Q補(bǔ)=0100 0000 0000 0000BQ=16384P補(bǔ)=1000 0000 0000 0001BP
4、反=1000 0000 0000 0000BP原=1111 1111 1111 1111BP=-327671.20 請判斷以下八位二進(jìn)制數(shù)補(bǔ)碼運(yùn)算是否會產(chǎn)生溢出,或者產(chǎn)生進(jìn)位,為什么?(1)-23+78-23補(bǔ)+78補(bǔ)=E9H+4EH=(1)37H無溢出,有進(jìn)位(2)-45-92-45補(bǔ)+-92補(bǔ)=D3H+A4H=(1)77H有溢出,有進(jìn)位(3)89+3089補(bǔ)+30補(bǔ)=59H+1EH=77H無溢出,無進(jìn)位(4)78-5278補(bǔ)+-52補(bǔ)=4EH+CCH=(1)1AH無溢出,有進(jìn)位(5)83-(-30)83補(bǔ)+30補(bǔ)=53H+1EH=71H無溢出,無進(jìn)位(6)126-(-34)126補(bǔ)+34補(bǔ)
5、=7EH+22H=A0H有溢出,無進(jìn)位(7)108+34108補(bǔ)+34補(bǔ)=6CH+22H=8EH有溢出,無進(jìn)位1.22 設(shè)有X=80H,Y=79H,Z=88H,在下述情況下比較三個數(shù)的大小。(1)三數(shù)均為無符號數(shù)Y<X<Z(2)三數(shù)均為有符號數(shù)(補(bǔ)碼)X補(bǔ)=1000 0000BX=-1000 0000B(負(fù)數(shù))Y補(bǔ)=0111 1001BY=0111 1001B(正數(shù))Z補(bǔ)=1000 1000BZ反=1000 0111BZ原=1111 1000BZ=-0111 1000B(負(fù)數(shù))X<Z<Y(3)三數(shù)均為壓縮BCD碼X=80Y=79Z=88Y<X<Z(4)三數(shù)均
6、為有符號數(shù)(移碼)X移=1000 0000BX=X移 - 0111 1111B=0000 0001B(正數(shù))Y移=0111 1001BY=Y移 0111 1111B=-0000 0110(負(fù)數(shù))Z移=1000 1000BZ=Z移 0111 1111B=0000 1001(正數(shù))Y<X<Z第三章 指令3.2什么是機(jī)器碼?什么是助記符?什么是操作碼?什么是操作數(shù)?不同指令的機(jī)器碼字節(jié)數(shù)都相同嗎?3.3什么是尋址?什么是尋址方式?操作數(shù)可能在哪些地方?對應(yīng)的操作數(shù)名稱和尋址方式名稱分別是什么?3.4 16位操作數(shù)在存儲器中存放的規(guī)則是什么?什么叫“低對低、高對高”?3.7指令中尋址存儲器
7、操作數(shù)使用物理地址還是邏輯地址?邏輯地址轉(zhuǎn)換成物理地址的算法是什么?在指令中要確定一個存儲器操作數(shù)應(yīng)該提供哪三種信息?3.8寫出存儲器尋址方式中有效地址EA的通式。簡單歸納段寄存器的默認(rèn)規(guī)則。解:3.2:機(jī)器碼:它指的是將硬件序列號經(jīng)過一系列加密、散列形成的一串序列號,即使指令的二進(jìn)制編碼。助記符:是便于人們記憶、并能描述指令功能和指令操作數(shù)的符號操作碼:組成機(jī)器指令的一部分用來說明指令的性質(zhì)和功能。操作數(shù):用來說明操作的對象??梢允蔷唧w的數(shù)值、寄存器或存儲器地址。不同指令的機(jī)器碼字節(jié)數(shù)不一樣。3.3:尋址:尋找操作數(shù)會操作數(shù)的地址尋址方式:尋找操作數(shù)地址的方法即為尋址方式。對應(yīng)的操作數(shù)名稱和
8、尋址方式名稱見下表:操作數(shù)的位置操作數(shù)名稱尋址方式名稱在指令中立即數(shù)立即尋址在寄存器中寄存器操作數(shù)寄存器尋址在存儲器中存儲器操作數(shù)存儲器尋址在I/O端口中I/O操作數(shù)I/O端口尋址3.4:16位操作數(shù)在存儲器中存放的規(guī)則是:低字節(jié)在低地址中,高字節(jié)在高地址中,即所謂的低對低、高對高。3.7指令中尋址存儲器操作數(shù)使用的是邏輯地址。邏輯地址轉(zhuǎn)換成物理地址的算法是:段地址x16+偏移地址=物理地址在指令中要確定一個存儲器操作數(shù)要提供三種信息:段地址、偏移地址和數(shù)據(jù)類型。3.8存儲器尋址方式中有效地址EA的通式:EA=()基址+()地址+DISP偏移量段寄存器的默認(rèn)規(guī)則:如果有效地址的表達(dá)式中有基址寄
9、存器BP則默認(rèn)堆棧段SS,其他一律默認(rèn)數(shù)據(jù)段DS。3.9設(shè)段寄存器DS=1000H,SS=2000H,ES=3000H,通用寄存器BX=4000H,BP=5000H,SI=6000H,DI=70000H。在下列各指令中指出存儲器操作數(shù)的尋址方式,求出有效地址EA、物理地址PA、并分別用物理地址和邏輯地址說明指令執(zhí)行結(jié)果。(1)MOV CX,2300H(2)MOV BYTE PTRBX,8FH(3)MOV DH,BP+3000H(4)MOV ES:SI+1210H ,AX(5)MOV BX+DI+50H,AX(6)INC WORD PTRBX+SI解:(1)MOV CX,2300H直接尋址;數(shù)據(jù)
10、段中偏移地址為2300H所對應(yīng)的字送CX中。 有效地址EA=2300H,物理地址PA=DS*16+EA=10000H+2300H=12300H執(zhí)行結(jié)果:(12300H)CL,(12301H)CH(2)MOV BYTE PTRBX,8FH寄存器間接尋址;立即數(shù)8FH,送入數(shù)據(jù)段偏移地址為BX所對應(yīng)的字節(jié)中。 有效地址EA=BX=4000H,物理地址PA=DS*16+EA=10000H+4000H=14000H 執(zhí)行結(jié)果:8FH (14000H)(3)MOV DH,BP+3000H基址尋址;數(shù)據(jù)段中偏移地址為BP內(nèi)容與3000H之和所對應(yīng)的字節(jié)送至DH有效地址EA=BP+3000H=8000H物理
11、地址PA= SS*16+EA=20000H+8000H=28000H執(zhí)行結(jié)果:(28000H)DH(4)MOV ES:SI+1210H ,AX變址尋址;AX內(nèi)容送入數(shù)據(jù)段中偏移地址SI與1210H之和所對應(yīng)的字中有效地址EA=SI+1210H=6000H+1210H=7210H物理地址PA=ES*16+EA=3000H*16+7210H=37210H執(zhí)行結(jié)果:AL(37210H),AH(37211H)(5)MOV BX+DI+50H,AX基址變址尋址;AX內(nèi)容送入數(shù)據(jù)段中偏移地址為BX內(nèi)容與DI內(nèi)容及50H內(nèi)容之和所對應(yīng)的字節(jié)中有效地址EA=BX+DI+50H=4000H+70000H+50H
12、=74050H物理地址PA=DS*16+EA=1000H*16+74050H=84050H執(zhí)行結(jié)果:AL (84050H)(6)INC WORD PTRBX+SI 基址變址尋址;堆棧中偏移地址為BX內(nèi)容與SI內(nèi)容所對應(yīng)的字加1有效地址EA=BX+SI=4000H+6000H=A000H物理地址PA=DS*16+EA=1000H*16+A000H=1A000H執(zhí)行結(jié)果:1A000H中存放的字的值加13.10 分別說明指令MOV AX,2000H和指令MOV AX,2000H以及指令MOV AX,BX和指令MOV AX,BX的區(qū)別。解:MOV AX,2000H將立即數(shù)2000H送入寄存器AXMOV
13、 AX,2000H將數(shù)據(jù)段中偏移地址為2000H的數(shù)據(jù)送入AX;MOV AX,BX將寄存器BX操作數(shù)傳入AXMOV AX,BX將數(shù)據(jù)段中偏移地址為BX的內(nèi)容所對應(yīng)的字送入AX3.11 指出下列指令中源操作數(shù)的尋址方式。(1)MOV BL,0F9H(2)ADD BX,SI(3)SUB CL,4000H(4)CMP DX,SI(5)AND AL,BX+1(6)OR BP,DI+2100H(7)XOR AX,BP+SI(8)MOV CX,300解:(1)MOV BL,0F9H 立即尋址(2)ADD BX,SI 寄存器尋址尋址(3)SUB CL,4000H 直接尋址(4)CMP DX,SI 寄存器間接
14、尋址(5)AND AL,BX+1 基址尋址(6)OR BP,DI+2100H 變址尋址(7)XOR AX,BP+SI 基址變址尋址(8)MOV CX,300 立即尋址3.12下列指令都是非法的,指出各指令錯在哪里?(1)MOV SI,AH(2)MOV 70H,BL(3)MOV CX,F123H(4)MOV BX,6AH(5)MOV ES,5000H(6)MOV DI,3000H(7)MOV DS,SS(8)MOV CS,AX(9)MOV AL,CX(10)MOV BX+BP,DX(11)MOV BH,SI+DI+2(12)PUSH AL(13)LEA AX,BX(14)LDS BL,5100H
15、(15)IN AH,DX(16)OUT 288H,AL(17)ADD 2400H,1234H(18)XOR 2500R,BX+10H(19)INC SI(20)MUL 10(21)IDIV BP+DI+1300H(22)SAL AL,2解:(1)MOV SI,AH 兩個操作數(shù)字長不一致(2)MOV 70H,BL 立即數(shù)不能做目的操作數(shù)(3)MOV CX,F123H 十六進(jìn)制的數(shù)以字母打頭時前必須補(bǔ)0(4)MOV BX,6AH 兩個操作數(shù)的字長不確定(5)MOV ES,5000H 立即數(shù)不能直接送段寄存器(6)MOV DI,3000H 兩個操作數(shù)不能存儲器操作數(shù)(7)MOV DS,SS 段寄存器
16、不可相互傳送數(shù)據(jù)(8)MOV CS,AX CS不能做目的操作數(shù)(9)MOV AL,CX CX不能用作寄存器間接尋址(10)MOV BX+BP,DX 存儲器尋址方式中表示有效地址不能同時為兩個基址寄存器(11)MOV BH,SI+DI+2 存儲器尋址方式中表示有效地址不能同時為兩個變址寄存器(12)PUSH AL 入棧出棧操作必須以字為單位,AL應(yīng)為AX(13)LEA AX,BX LEA指令中源操作數(shù)必須為存儲器尋址方式應(yīng)為BX(14)LDS BL,5100H LDS指令中目的操作數(shù)必須為16位的通用寄存器(15)IN AH,DX IN指令中的目的操作數(shù)只能是AL或AX(16)OUT 288H,
17、AL 輸入輸出指令中端口地址應(yīng)為16位,必須先送給DX;應(yīng)為MOV DX,288H OUT DX,AL(17)ADD 2400H,1234H 兩個操作數(shù)的字長不確定(18)XOR 2500R,BX+10H 兩個操作數(shù)不能同時為內(nèi)存操作數(shù)(19)INC SI 操作數(shù)的字長不確定(20)MUL 10MUL 指令的操作數(shù)不能為立即數(shù)(21)IDIV BP+DI+1300H 操作數(shù)的字長不確定(22)SAL AL,2 移位次數(shù)大于1時必須先送給CL3.13將寄存器AH、BH、CH和數(shù)據(jù)段中偏移地址為2100H,2101H,2102H的3個字節(jié)單元內(nèi)容都置數(shù)A0H,最后將寄存器DL的內(nèi)容與偏移地址為21
18、03H的字節(jié)單元內(nèi)容互換。試編寫程序。解:DEBUG -AMOV AH, 0A0MOV BH, 0A0MOV CH, 0A0MOV 2100H, AHMOV 2101H, BHMOV 2102H, CHXCHG DL, 21033.14設(shè)SP=2000H,AX=3000H,BX=5000H,執(zhí)行以下3條指令后,問SP=?AX=?BX=?PUSH AXPUSH BXPOP AX解:指令執(zhí)行的結(jié)果應(yīng)為SP=2000H-2H-2H+2H=1FFEHAX=5000H,BX=5000H3.15說明指令LEA SI,BX與指令MOV SI,BX的區(qū)別。解:LEA SI,BX是地址傳送指令,將BX的有效地址
19、取至16位SI寄存器中。這里取的是操作數(shù)的地址。MOV SI,BX是寄存器間接尋址,數(shù)據(jù)段中偏移地址為BX內(nèi)容所對應(yīng)的字送SI中。取的是操作數(shù)。3.16下列程序執(zhí)行完后,AX=?BX=?CX=?MOV AX,1122HMOV BX,3344HPUSH AXPOP CXXCHG BX,CXLEA CX,BX解:AX=1122H BX=1122H CX=1122H3.17 CPU分別執(zhí)行下列各段程序后,寫出各個執(zhí)行結(jié)果的狀態(tài)標(biāo)志位OF,SF,ZF,AF,PF,CF的值。(1)MOV AL,7AH ADD AL,53H(2)MOV BL,0AFH ADD BL,OEAH(3)MOV CL,0FFH
20、ADD CL,01H(4)MOV DL,49H SUB DL,0CAH解:(1)MOV AL,7AH ADD AL,53H74H+53H=0111 0100+0101 0011=1100 0111BOF=1,SF=1,ZF=0,AF=0,PF=0,CF=0(2)MOV BL,0AFH ADD BL,OEAHAFH+EAH=1010 1111+1110 1010=1001 1001BOF=0,SF=1,ZF=0,AF=1,PF=1,CF=1(3)MOV CL,0FFH ADD CL,01HFFH+01H=1111 1111+0000 0001=0000 0000BOF=0,SF=0,ZF=1,A
21、F=1,PF=1,CF=1(4)MOV DL,49H SUB DL,0CAH49H-CAH=0100 1001-1100 1010=0111 1111BOF=0,SF=0,ZF=0,AF=1,PF=1,CF=13.18有兩個32位的二進(jìn)制數(shù),分別存放在兩個16為寄存器CX:DX和兩個16位寄存器SI:DI中,求兩數(shù)之和,并將和放在兩個16位寄存器AXBX中,即AX:BX CX:DX+SI:DI。試編寫程序。解:設(shè)兩個32位數(shù)分別為12345678 23456789 DEBUG-A MOV CX=1234 MOV DX=5678 MOV DI=6789 MOV SI=2345ADD DX,DIA
22、DC CX,SI MOV BX,DXMOV AX,CX3.21分別說明下面兩條乘法指令中被乘數(shù)、乘數(shù)、積所在的位置。(1)MUL BL(2)IMUL BX解:(1)被乘數(shù)在AL中,乘數(shù)在指令中給出的8位操作數(shù)BL中,乘積在AX中。(2)被乘數(shù)在AX中,乘數(shù)在指令中給出的16位操作數(shù)BX中,乘積在AX中。3.22若AL=86H,BL=22H,分別執(zhí)行指令MUL和IMUL后,其結(jié)果是多少?OF=?CF=?解:AL=86H執(zhí)行MUL指令后OF=1、CF=1 執(zhí)行IMUL指令后OF=1、CF=1BL=22H執(zhí)行MUL指令后OF=1、CF=1 執(zhí)行IMUL指令后OF=0、CF=03.23分別說明下面兩條
23、除法指令中被除數(shù)、除數(shù)、商、余數(shù)所在的位置。(1)DIV CX(2)IDIV CL解:(1)AX內(nèi)容除以16位操作數(shù)CX結(jié)果的商放入AX余數(shù)放入DX中。(2)AX內(nèi)容除以8位操作數(shù)CL結(jié)果的商放入AL余數(shù)放入AH中。3.24分別寫出CPU執(zhí)行下面兩程序后,寄存器DX=?AX=?(1)MOV AL,7FHCBWCWD(2)MOV AL,80HCBWCWD解:(1)DX=0000 AX=007F(2)DX=0000 AX=FF803.25分別寫出CPU執(zhí)行下面兩段程序后,寄存器AL=?標(biāo)志CF=?(1)MOV AL,36HADD AL,58HDAA(2)MOV AL,49HADD AL,87HDA
24、A解:(1)36H+58H=8EH,由于低4位大于9,需要修正,AL=8EH+6H=94H寄存器AL=94H標(biāo)志寄存器CF=0(2)49H+87H=D0H,AF=1,由于高4位大于9,需要修正,AL=D0H+66H=36H,CF=13.26設(shè)AX和CX中存放著兩個4位的壓縮型BCD碼,求兩數(shù)之和,并將和放在AX中。試編寫程序。解:ADD AL,BLDAAMOV CL,ALMOV AL,AHADC AL,BHDAAMOV AH,ALMOV AL,CL3.27分別寫出CPU執(zhí)行下面兩段程序后,寄存器AX=?標(biāo)志CF=?(1)MOV AX,0138HADD AL,35HAAA(2)MOV AX,05
25、33HADD AL,34HAAA解:(1)AX=0230H,CF=1(2)AX=0507H,CF=03.28下列程序執(zhí)行完后,AX=?CF=?MOV AX,3649HADD AL,AHDAACBWINC AHADC AL,17HAAA解:AX=0102H,CF=13.29有如下程序段MOV AL,45HADD AL,71HDAAMOV BL,ALADC AL,19HDAAMOV BH,AL問,執(zhí)行完此程序后,BX= 3616 ,標(biāo)志位PF=1 ,CF=0 .3.30分別只使用一條指令實(shí)現(xiàn)下述各功能。(1)使AL的低四位清0,高四位不變;(2)使DI的高10位清0,低6位不變;(3)使BL的低4
26、位置1,高四位不變;(4)使SI的高2位置1,低14位不變;(5)使CL中的D2、D3、D4、D5、D6位取反,D0、D1、D7位不變;(6)使BP的高4位取反,低12位不變。解:(1)AND AL,0F0H(2)AND DI,003FH(3)OR BL,0FH(4)OR SI,0C000H(5)XOR CL,7CH(6)XOR BP,0F000H3.31編寫程序?qū)崿F(xiàn):使寄存器SI的高5位置1,低5位清0,中間6位取反。解:OR SI,0F800HAND SI,0FFE0HXOR SI,07E0H3.32寫出用一條指令使AX清0的一些指令。解:MOV AX, 0XOR AX, AXSUB AX
27、, AXAND AX, 03.34用最少的指令實(shí)現(xiàn)下述功能。(1)使AL的低4位移到高4位,低4位清0;(2)使AH的高4位移到低4位,高4位清0.解:(1)MOV CL,4 SHL AL,CL(2)MOV CL,4 SHR AL,CL3.35用移位指令實(shí)現(xiàn)如下功能。(1)將CL中的無符號數(shù)乘2;(2)將BX中的帶符號數(shù)除以4;(3)將DX中的無符號數(shù)除以8.解:(1)SAR CL,1(2)MOV CL,2 SAR BX,CL(3)MOV CL,4SHR DX,43.37編程實(shí)現(xiàn)如下功能。(1)將AL的低6位移到高6位,高2位移到低2位;(2)將BL的高6位移到低6位,低2位移到高2位;(3)
28、將BH的高4位與低4位變換;(4)將BP的高8位與低8位變換。解:(1)MOV CL, 2ROL AL, CL(2)MOV CL, 2ROR BL, CL(3)MOV CL,4 ROR BH,CL(4)MOV CL,8 ROR BP,CL 3.39設(shè)AX=1234H,CX=9602H,下列程序執(zhí)行完后,AL=?AND AL,AHSHL AL,CLOR AL,CHSAR AL,XLXOR AL,CLRCL AL,解:AND AL,AH AL=10HSHL AL,CL CL=40HOR AL,CH AL=0D6HSAR AL,XL AL=0F5HXOR AL,CL AL=0F7HRCL AL, A
29、L=0EE最后結(jié)果:AL=0EEH3.52 比較AX和BX中兩個無符號數(shù)的大小,若AX>BX,則將SI中的高8位和低8位交換;若AX=BX,則將SI中的高7位置1;若AX<BX,則將SI中的帶符號數(shù)除以2。試編寫程序。CODESEGMENTASSUMECS:CODESTART:CMPAX,BXJZA1;若AX=BX,轉(zhuǎn)移到A1JBA2;若AX<BX,轉(zhuǎn)移到A2MOVCL,8;交換SI中高8位和低8位ROLSI,CLJMPNEXTA1:ORSI,0FE00H;將SI中的高7位置1JMPNEXTA2:MOVCX,2;將SI中的帶符號數(shù)除以2MOVAX,SI;將被除數(shù)送給DX:AX
30、MOVDX,0IDIVCXMOVSI,AX;將所求結(jié)果送回SINEXT:MOVAH,4CHINT21HCODEENDSENDSTART3.53 在以DS:3301H為首地址的存儲單元中,連續(xù)存放了50個無符號的字節(jié)數(shù)據(jù),要求在其中找出最小值,并將它放在地址為DS:3300H的字節(jié)單元中。試編寫程序。CODESEGMENTASSUMECS:CODESTART:MOVSI,3301H;將首地址送給SI,用SI可以間接訪問數(shù)組中的元素MOVAL,SI;將第一個數(shù)送給ALMOVCX,49;50個數(shù)比較49次CYCLE:INCSI;讓SI指向下一個數(shù)CMPAL,SIJBENEXT;AL<=SI,則
31、判斷下一個數(shù)MOVAL,SI;AL>SI,則用SI取代ALNEXT:LOOPCYCLEMOVDS:3300H,AL;編譯器會認(rèn)為3300H就是3300H,故在前面加DS:MOVAH,4CHINT21HCODEENDSENDSTART3.58 編寫將內(nèi)存以ES:1000H開始的256個字節(jié)單元清零的程序。CODESEGMENTASSUMECS:CODESTART:MOVSI,1000HMOV CX,256CYCLE:MOVSI,BYTE PTR 0INC SILOOPCYCLEMOVAH,4CHINT21HCODEENDSENDSTART用串操作指令實(shí)現(xiàn):CODESEGMENTASSUME
32、CS:CODESTART:MOVDI,1000H;給目的串首地址賦初值MOVAL,0;用0來初始化MOVCX,256;循環(huán)256次CLD;地址從小到大變化REPSTOSB;用AL中的值對指定的目的串初始化MOVAH,4CHINT21HCODEENDSENDSTART3.59 試編寫程序,統(tǒng)計(jì)以DS:8000H為起始地址的連續(xù)200個字節(jié)單元中的0的個數(shù)。CODE SEGMENT ASSUME CS:CODESTART: MOV AX,0;用AX統(tǒng)計(jì)0的個數(shù) MOV CX,200;循環(huán)200次 MOV SI,8000H;通過SI間接訪問內(nèi)存DS:8000H開始的存儲單元CYCLE:CMP BYT
33、E PTR SI,0 JNZ NEXT INC AXNEXT:INC SI LOOP CYCLE MOV AH,4CH INT 21HCODE ENDS END START第四章 匯編4.5 程序中數(shù)據(jù)定義如下:DATA1DW?DATA2DB32 DUP(?)DATA3DD?DLENGTHEQU$-DATA1試問DLENGTH的值是多少?DLENGTH=384.6 在某程序中需要為一個變量BUF預(yù)留500個字節(jié)的存儲空間,請寫出相應(yīng)的指令,如果要預(yù)留500個字的存儲空間呢?BUF DB 500 DUP(?)BUF DW 500 DUP(?)4.7 程序中數(shù)據(jù)定義如下:BUFFERBDBABCD
34、EFRESULTDB?BUFFERWDW30 DUP(?)寫出以下指令的執(zhí)行結(jié)果:MOVAX, TYPE RESULT; AX=1MOVBX, TYPE BUFFERW; BX=2MOVCX, LENGTH BUFFERB; CX=1MOVDX, LENGTH BUFFERW; DX=30MOVAX, SIZE RESULT; AX=1MOVBX, SIZE BUFFERW; BX=604.11 設(shè)BX=1103H,則執(zhí)行下列指令后AX和CX各為多少?若BX=03H,則結(jié)果又如何?MOVAX, BX AND 0FFHMOVCX, BX EQ 1103HBX=1103HAX=0003H,CX=0
35、FFFFHBX=03HAX=0003H,CX=04.13 兩個ASCII碼數(shù)串定義如下:STR1DB352678STR2DB123400編寫程序段,計(jì)算STR1+STR2,要求結(jié)果仍然是ASCII碼串。DATASEGMENTSTR1DB'352678'STR2DB'123400'STRDB6 DUP (?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,STR1+5;SI指向STR1的最后一個元素LEA DI,STR2+5;DI指向STR2的最后一個元素LEABX,STR
36、+5;BX指向STR的最后一個元素MOVCX,6;循環(huán)6次CLC;初始認(rèn)為最低位沒有進(jìn)位CYCLE:MOVAL,SIMOVAH,DIADCAL,AH;將對應(yīng)的兩個ASCII碼相加AAA;修正,僅僅取運(yùn)算結(jié)果的低4位RCRDX,1;保護(hù)進(jìn)位標(biāo)志ORAL,30H;將所有的數(shù)值轉(zhuǎn)換為對應(yīng)的ASCII碼SHLDX,1;恢復(fù)進(jìn)位標(biāo)志MOVBX,AL;將所求的ASCII碼送給STR的相應(yīng)元素DEC SI;SI指向前一個數(shù)DECDIDECBXLOOPCYCLEMOVAH,4CHINT 21HCODEENDSENDSTART4.14 下面程序段是實(shí)現(xiàn)從鍵盤輸入10個一位十進(jìn)制數(shù)累加。最后累加和以非壓縮BCD碼
37、形式存放在AH(高位)和AL(低位)中。試把程序段中所空缺的指令填上。XORBX, BXMOVCX,10LOP:MOVAH, 01H;鍵盤字符輸入INT21HSUBAL, 30HMOVDL, ALMOVAX, BXADD AL, DLAAAMOVBX, AXLOOPLOP4.18 將內(nèi)存中某數(shù)據(jù)塊的正數(shù)和負(fù)數(shù)分開,并分別將這些正數(shù)和負(fù)數(shù)送同一數(shù)據(jù)段的兩個緩沖區(qū)中,并在屏幕上顯示正數(shù)和負(fù)數(shù)的個數(shù)。DATA SEGMENTBUF DB 12,15,-2,3,-7,-8,19,-25N=$-BUFBUF1 DB N DUP(?);存放正數(shù)BUF2 DB N DUP(?);存放負(fù)數(shù)DATA ENDSC
38、ODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXLEA BX,BUF;BX指向BUFLEA SI,BUF1;SI指向存放正數(shù)的緩沖區(qū)BUF1LEA DI,BUF2;DI指向存放負(fù)數(shù)的緩沖區(qū)BUF2MOV CX,N;循環(huán)N次MOV DX,0;DH表示負(fù)數(shù)的個數(shù),DL表示正數(shù)的個數(shù),都清零CYCLE:MOV AL,BX;將BX指向的數(shù)送給ALCMP AL,0;比較AL與0的大小JG GREAT;AL>0,則轉(zhuǎn)移至GREAT MOV DI,AL;AL<=0,將AL存入負(fù)數(shù)的數(shù)組INC DH;負(fù)數(shù)的個數(shù)加1INC DI;DI指向下一個負(fù)數(shù)JMP NEXTGREAT:MOV SI,AL;AL>0,將AL存入正數(shù)的數(shù)組 INC DL;正數(shù)的個數(shù)加1INC SI;SI指向下一個負(fù)數(shù)NEXT:INC BX;判斷下一個數(shù)LOOP CYCLEADD DL,30H;將正數(shù)的個數(shù)變成字符輸出MOV AH,2INT 21HADD
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版農(nóng)機(jī)生產(chǎn)性服務(wù)業(yè)合作協(xié)議4篇
- 2025年度瓷石原料供應(yīng)鏈管理與銷售合同3篇
- 2025年度果園種植與農(nóng)產(chǎn)品加工一體化承包合同4篇
- 二零二五年度電梯自動扶梯安裝與維護(hù)分包合同4篇
- 2025版大豆產(chǎn)業(yè)投資基金合作協(xié)議范本3篇
- 智能化物流系統(tǒng)在越野車中的應(yīng)用-深度研究
- 2025年個人房屋貸款合同范本修訂版
- 2025年打樁機(jī)租賃與出租安全責(zé)任合同3篇
- 2025年度大米市場調(diào)研與采購策略咨詢合同4篇
- 2025年度個人店面租賃合同規(guī)范版
- 2024年甘肅省武威市、嘉峪關(guān)市、臨夏州中考英語真題
- DL-T573-2021電力變壓器檢修導(dǎo)則
- 繪本《圖書館獅子》原文
- 安全使用公共WiFi網(wǎng)絡(luò)的方法
- 2023年管理學(xué)原理考試題庫附答案
- 【可行性報(bào)告】2023年電動自行車相關(guān)項(xiàng)目可行性研究報(bào)告
- 歐洲食品與飲料行業(yè)數(shù)據(jù)與趨勢
- 放療科室規(guī)章制度(二篇)
- 中高職貫通培養(yǎng)三二分段(中職階段)新能源汽車檢測與維修專業(yè)課程體系
- 浙江省安全員C證考試題庫及答案(推薦)
- 目視講義.的知識
評論
0/150
提交評論