匯編語(yǔ)言程序設(shè)計(jì)練習(xí)題參考_第1頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)練習(xí)題參考_第2頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)練習(xí)題參考_第3頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)練習(xí)題參考_第4頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)練習(xí)題參考_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、文檔供參考,可復(fù)制、編制,期待您的好評(píng)與關(guān)注! 匯編語(yǔ)言程序設(shè)計(jì)練習(xí)題一、字符與串處理類 1.逆序輸出字符串“BASED ADDRESSING”。 2.試編寫一段程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來(lái)。 3.編寫程序,從鍵盤接收一個(gè)小寫字母,然后找出它的前導(dǎo)字符和后續(xù)字符,再按順序顯示這三個(gè)字符。 4.從鍵盤上輸入一系列以$為結(jié)束符的字符串,然后對(duì)其中的非數(shù)字字符計(jì)數(shù),并顯示計(jì)數(shù)結(jié)果。 5.從鍵盤上輸入一串字符(用回車鍵結(jié)束,使用0A號(hào)功能調(diào)用。)放在STRING中,試編制一個(gè)程序測(cè)試字符串中是否存在數(shù)字。如有,則把CL的第5位置1,否則將該位置置0。 6.從鍵盤上輸入一串字符(用回

2、車鍵結(jié)束,使用0A號(hào)功能調(diào)用。),將其中的小寫英文字母變換為大寫英文字母,其他字符保持不變。然后將變換后的字符串顯示出來(lái)。 7.試編制一個(gè)程序:從鍵盤輸入一行字符,要求第一個(gè)鍵入的字符必須是空格符,如不是,則退出程序;如是,則開始接收鍵入的字符并順序存放在首地址為buffer的緩沖區(qū)中(空格符不存入),直到接收到第二個(gè)空格符時(shí)退出程序。 8.試編寫一段程序,要求比較兩個(gè)字符串string1和string2所含字符是否相等,如相等則顯示“MATCH”, 若不相同則顯示“NO MATCH”。 9.試編寫一段程序,要求輸入兩個(gè)字符串,如兩個(gè)字符串相等則顯示“MATCH”, 否則顯示“NO MATCH

3、”。 10.試編寫一段程序,要求在長(zhǎng)度為100H字節(jié)的數(shù)組中,找出大于61H的無(wú)符號(hào)數(shù)的個(gè)數(shù)并存入字節(jié)單元UP中,找出小于2FH的無(wú)符號(hào)數(shù)的個(gè)數(shù)并存入字節(jié)單元DOWN中。 11.在內(nèi)存區(qū)域0B800:0000-0B800:0FFFF(都是16進(jìn)制數(shù))內(nèi)查找首地址為SOURCE的串(SOURCE的首字節(jié)為串長(zhǎng)度),如果找到,則把AL的第0位置0,否則將該位置置1。 12.已知數(shù)組A包含15個(gè)互不相等的整數(shù),數(shù)組B包含20個(gè)互不相等的整數(shù)。試編制一個(gè)程序,把既在A中又在B中出現(xiàn)的整數(shù)存放于數(shù)組C中。 13.在附加段中,有一個(gè)首地址為L(zhǎng)IST和未經(jīng)排序的字?jǐn)?shù)組。在數(shù)組的第一個(gè)字中,存放著該數(shù)組的長(zhǎng)度

4、,數(shù)組的首地址已存放在DI寄存器中,AX寄存器中存放著一個(gè)數(shù)。要求編制一個(gè)程序:在數(shù)組中查找該數(shù),如果找到此數(shù),則把它從數(shù)組中刪除。二、數(shù)字輸入輸出類 1. 試編制一個(gè)程序,把BX寄存器內(nèi)的二進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式在屏幕上顯示出來(lái)。 2. 試編制一個(gè)程序,把BX寄存器內(nèi)的二進(jìn)制數(shù)以八進(jìn)制數(shù)的形式在屏幕上顯示出來(lái)。 3. 試編制一個(gè)程序,把BX寄存器內(nèi)的二進(jìn)制數(shù)以十進(jìn)制數(shù)的形式在屏幕上顯示出來(lái)。 4.從鍵盤上輸入2個(gè)一位數(shù),求出它們的和(假設(shè)和不超過(guò)1位)。 5.試編寫一段程序,從鍵盤接收一個(gè)四位的十六進(jìn)制數(shù),并在終端上顯示與它等值的二進(jìn)制數(shù)。 6.試編寫一段程序,從鍵盤接收一個(gè)0-65535

5、間的十進(jìn)制無(wú)符號(hào)數(shù),并在終端上顯示與它等值的二進(jìn)制數(shù)。 7.試編寫一段程序,從鍵盤接收一個(gè)-32768-32767間的十進(jìn)制有符號(hào)數(shù),并在終端上顯示與它等值的二進(jìn)制數(shù)。 8.編寫一個(gè)程序,從鍵盤輸入一個(gè)065535之間的10進(jìn)制無(wú)符號(hào)數(shù),然后以16進(jìn)制和四進(jìn)制數(shù)形式顯示出所輸入的數(shù)。 9.編寫一個(gè)程序,從鍵盤輸入一個(gè)不長(zhǎng)于8位的四進(jìn)制數(shù),并將所輸入的數(shù)以10進(jìn)制數(shù)形式顯示出來(lái)。 10.從鍵盤上接收一個(gè)有符號(hào)的十進(jìn)制數(shù),然后在下一行用十進(jìn)制輸出此有符號(hào)數(shù)。三、數(shù)值處理類 1.編寫程序,將一個(gè)包含有20個(gè)數(shù)據(jù)的數(shù)組M分成2個(gè)數(shù)組:正數(shù)數(shù)組P和負(fù)數(shù)數(shù)組N,并分別把這兩個(gè)數(shù)組中數(shù)據(jù)的個(gè)數(shù)顯示出來(lái)。 2

6、.試編寫一個(gè)程序,求出首地址為DATA的100D字?jǐn)?shù)組中的最小偶數(shù),并把它存放在AX中。 3.有一個(gè)首地址為mem的100個(gè)字的數(shù)組,試編制程序刪除數(shù)組中所有為零的項(xiàng),并將后續(xù)項(xiàng)向前壓縮,最后將數(shù)組的剩余部分補(bǔ)上零。 4.設(shè)在A、B和C單元中分別存放著3個(gè)數(shù)。若3個(gè)數(shù)都不是0,則求出三個(gè)數(shù)的和并存放在S單元中;若其中有一個(gè)數(shù)為0,則把其他兩個(gè)單元也清零。請(qǐng)編寫此程序。 5.試編寫一個(gè)程序,要求比較數(shù)組ARRAY中的三個(gè)16位補(bǔ)碼數(shù),并根據(jù)比較結(jié)果在終端上顯示如下信息: 如果三個(gè)數(shù)都不相等則顯示0; 如果三個(gè)數(shù)有兩個(gè)相等則顯示1; 如果三個(gè)數(shù)都相等則顯示2。 6.從鍵盤輸入一系列字符(以回車符結(jié)

7、束),并按字母、數(shù)字及其他字符分類計(jì)數(shù),最后顯示這三類的計(jì)數(shù)結(jié)果。 7.已定義了兩個(gè)整數(shù)變量A和B,試編寫程序完成下列功能: 若兩個(gè)數(shù)種有一個(gè)是奇數(shù),則將奇數(shù)存入A中,偶數(shù)存入B中; 若兩個(gè)數(shù)均為奇數(shù),則將兩數(shù)均加1后存回原變量; 若兩個(gè)數(shù)均為偶數(shù),則兩個(gè)變量均不改變。 8.在首地址為DATA的字?jǐn)?shù)組中,存放了100H個(gè)16位無(wú)符號(hào)數(shù),試編寫一個(gè)程序,求出它們的平均值放在AX寄存器中;并求出數(shù)組中有多少個(gè)數(shù)小于此平均值,將結(jié)果放在BX寄存器中。(注意,分別考慮這些數(shù)據(jù)的累加和始終在0-65535之間和超出65535的情況) 9.已知在首地址為DATA的字?jǐn)?shù)組中存放一系列有符號(hào)數(shù)(首元素為數(shù)據(jù)個(gè)

8、數(shù)),試編寫一個(gè)程序求出它們的平均值放在變量AVER中,并求出數(shù)組中有多少個(gè)數(shù)大于該平均值,將大于平均值的元素個(gè)數(shù)保存在變量COUNT中。(注意,分別考慮這些數(shù)據(jù)的累加和始終在-32768-32767之間和超出-32768-32767之外)。 10.編寫一個(gè)程序,將一個(gè)包含有30個(gè)字?jǐn)?shù)據(jù)的數(shù)組M分成兩個(gè)數(shù)組:奇數(shù)數(shù)組ODD和偶數(shù)數(shù)組EVEN,并把這兩個(gè)數(shù)組中元素的個(gè)數(shù)以二進(jìn)制形式顯示出來(lái)(不能使用DIV/IDIV指令)。 11.在附加段中,有一個(gè)按從小到大的順序排列的無(wú)符號(hào)數(shù)數(shù)組,其首地址存放在DI寄存器中,數(shù)組中的第一個(gè)單元存放著數(shù)組長(zhǎng)度。在AX中有一個(gè)無(wú)符號(hào)數(shù),要求在數(shù)組中查找(AX),如

9、找到,則使CF=0,并在SI中給出該元素在數(shù)組中的偏移地址;如未找到,則使CF=1。 12. 在附加段中有一個(gè)字?jǐn)?shù)組,其首地址已存放在DI寄存器中,在數(shù)組的第一個(gè)字中存放著該數(shù)組的長(zhǎng)度。要求編制一個(gè)程序使該數(shù)組中的數(shù)按照從小到大的次序排列整齊。(分別使用起泡排序算法、選擇排序算法、插入排序算法)。 13.在ADDR單元中存放著數(shù)Y的地址,試編制一個(gè)程序把Y中1的個(gè)數(shù)存入COUNT單元中。49. 編寫一個(gè)程序,計(jì)算 1 + 2 + 3 + 4 + + N的累加和,并把累加和與10進(jìn)制形式顯示出來(lái)。(不能使用公式計(jì)算“累加和=N×(N+1)/2”,必須使用程序?qū)崿F(xiàn)循環(huán)累加來(lái)計(jì)算)。 四、

10、I/O與文件類 1.CMOS RAM是微機(jī)主板上的一塊可讀寫的RAM芯片,用來(lái)保存當(dāng)前系統(tǒng)的硬件配置和用戶對(duì)某些參數(shù)的設(shè)定。CMOS可由主板的電池供電,即使系統(tǒng)掉電,信息也不會(huì)丟失。 CMOS RAM本身只是一塊存儲(chǔ)器,只有數(shù)據(jù)保存功能,而對(duì)CMOS中各項(xiàng)參數(shù)的設(shè)定要通過(guò)專門的程序。開機(jī)時(shí)可以通過(guò)按某個(gè)鍵鍵入CMOS參數(shù)設(shè)置。我們可以通過(guò)端口70H/71H訪問(wèn)CMOS RAM。 70H為地址端口,存放要訪問(wèn)的CMOS RAM單元的地址; 71H為數(shù)據(jù)端口,存放從選定的單元中讀取的數(shù)據(jù),或要寫入到其中的數(shù)據(jù)。讀寫CMOS RAM前,要判斷端口0AH的位7,該位位1時(shí)表示石時(shí)鐘正在計(jì)時(shí),需等待該位

11、為0時(shí)才能讀寫。下面是CMOS RAM的部分單元存儲(chǔ)數(shù)據(jù)的含義(BCD碼)。 字節(jié)位移量 存放數(shù)據(jù)意義00h01h02h03h04h05h06h07h08h09h目前系統(tǒng)時(shí)間的“秒數(shù)”字段預(yù)約警鈴時(shí)間的“秒數(shù)”字段目前系統(tǒng)時(shí)間的“分鐘”字段預(yù)約警鈴時(shí)間的“分鐘”字段目前系統(tǒng)時(shí)間的“小時(shí)”字段預(yù)約警鈴時(shí)間的“小時(shí)”字段星期幾(星期一01,星期二02,依次類推)目前系統(tǒng)日期字段(031)目前系統(tǒng)月份字段(012)系統(tǒng)公元紀(jì)年的后兩位(0099;002000,012001,以此類推) 試編寫一個(gè)程序,實(shí)現(xiàn)當(dāng)前日期、時(shí)間。 2.某個(gè)計(jì)算機(jī)的打印機(jī)適配器有3個(gè)8位的端口(寄存器),其數(shù)據(jù)寄存器地址是37

12、8H,狀態(tài)寄存器地址是379H,控制寄存器地址是37AH。這些寄存器主要位的含義是: 控制寄存器。CPU控制打印機(jī)工作 位0:選通信號(hào)。正常工作室該位為0,當(dāng)已將數(shù)據(jù)發(fā)送到數(shù)據(jù)寄存器后,應(yīng)將該位置為1,以通知打印機(jī)從數(shù)據(jù)寄存器取出數(shù)據(jù)。置1后需要馬上置0。 位1:自動(dòng)換行。置1后,打印機(jī)每遇到回車就自動(dòng)走紙1行;置0后,需要向打印機(jī)送出換行符控制走紙。 位2:初始化。 位3:聯(lián)機(jī)。置1將設(shè)置打印機(jī)的聯(lián)機(jī)方式,只有在1方式下打印機(jī)才能正常工作。 其它位,暫不用。 狀態(tài)寄存器。適配器向CPU報(bào)告打印機(jī)的狀態(tài) 位3:0=打印機(jī)出錯(cuò);1=打印機(jī)可用。 位4:0=打印機(jī)脫機(jī);1=打印機(jī)聯(lián)機(jī)。 位5:0=

13、打印機(jī)有紙;1=打印機(jī)無(wú)紙。 位7:0=打印機(jī)忙;1=打印機(jī)空閑。 其它位,暫不用。 試編一個(gè)程序,將內(nèi)存STRING為首地址的字符串在打印機(jī)上打印出來(lái)(字符串以ASCII 0為結(jié)束標(biāo)志)。 3.某計(jì)算機(jī)端口地址600H的是8位寄存器,其位06分別控制數(shù)碼管顯示中各段D0D6的亮(1)和滅(0),七段數(shù)碼管的各段編號(hào)為: D0D1D5 D6D2D4 D3試編寫一個(gè)過(guò)程,將AL保存的一位10進(jìn)制數(shù)以數(shù)碼管顯示出來(lái)(如AL的值為3,則D0、D1、D2、D3、D6亮,D4、D5滅)。 4.編寫一個(gè)程序,新建一個(gè)文件:d:abc.txt,從鍵盤輸入文件的內(nèi)容(不超過(guò)100個(gè)字符)。然后新建一個(gè)文件:d

14、:def.txt,將d:abc.txt文件的內(nèi)容復(fù)制到d:def.txt。 5.在D盤根目錄建立一個(gè)文件abc.txt,第1次向文件中寫入“123456”六個(gè)字符,第2次增加“abcdefg”幾個(gè)字符。 6.從鍵盤上輸入文本文件:”d:temp1.txt”的內(nèi)容,然后新建一個(gè)文件d:temp2.txt, 把文件d:temp1.txt中的所有內(nèi)容復(fù)制到文件:temp2.ini中。 7.將內(nèi)存單元0A00H:0000開始的32KB內(nèi)存保存到文件A32K.BIN中。 8.從鍵盤上輸入10個(gè)人名,然后把它們按照升序的順序排序。五、子程序類 1.寫一段子程序SKIPLINES,完成輸出空行的功能??招械?/p>

15、行數(shù)由用戶在主程序中通過(guò)鍵盤輸入,并將行數(shù)放在AX寄存器中。 2.設(shè)有10個(gè)學(xué)生的成績(jī)分別是76,69,84,90,73,88,99,63,100和80分。試編制一個(gè)子程序統(tǒng)計(jì)60-69分,70-79分,80-89分,90-99分和100分的人數(shù),并分別放到S6,S7,S8,S9和S10單元中。3.編寫子程序嵌套結(jié)構(gòu)的程序,把整數(shù)分別用二進(jìn)制和八進(jìn)制形式顯示出來(lái)。 4.主程序BANDO:把整數(shù)字變量VAL1存入堆棧,并調(diào)用子程序PAIRS;子程序PAIRS:從堆棧中取出VAL1,調(diào)用二進(jìn)制顯示程序OUTBIN顯示出與其等效的二進(jìn)制數(shù),輸出8個(gè)空格;調(diào)用八進(jìn)制顯示程序OUTOCT顯示出與其等效的

16、八進(jìn)制數(shù),調(diào)用輸出回車及換行符的子程序。 5.主程序MAIN和過(guò)程PROADD在同一源文件中,要求分別使用變量名、地址表、堆棧傳送參數(shù)的方法,用過(guò)程PROADD累加數(shù)組中的所有元素,并把和(不考慮溢出的可能性)送到指定的存儲(chǔ)單元SUM中去。 6.從鍵盤上取得一個(gè)十進(jìn)制數(shù),然后把該數(shù)用十六進(jìn)制的形式顯示出來(lái)。要求子程序用寄存器參數(shù)傳送的方法。 7.使用跳躍表法,根據(jù)AL寄存器中哪一位位1(從低位到高位)把程序轉(zhuǎn)移到8個(gè)不同的子程序分支去。子程序0-7分別顯示數(shù)字0-7。 7.在數(shù)據(jù)區(qū)中有10個(gè)不同的信息,編號(hào)為0-9,每個(gè)信息包括30個(gè)字符?,F(xiàn)在要求編制一個(gè)程序:從鍵盤上接收0-9之間的一個(gè)編號(hào)

17、,然后在屏幕上顯示出相應(yīng)的信息內(nèi)容。六、綜合類 1.根據(jù)歐幾里德輾轉(zhuǎn)相除法求兩個(gè)正整數(shù)M、N的最大公約數(shù)R。 2.簡(jiǎn)化的歌德巴赫猜想:任何一個(gè)大于6的偶數(shù)均可以表示為兩個(gè)素?cái)?shù)之和。現(xiàn)從鍵盤輸入一個(gè)065535之間的無(wú)符號(hào)整數(shù),試驗(yàn)證歌德巴赫猜想。 如輸入數(shù)12,輸出: 12=5+7 如輸入數(shù)20,輸出: 20=3+17 20=7+13 如輸入數(shù)7,輸出: Must be even 如輸入數(shù)3,輸出: Must be greater than or equal to 6 3.用減奇數(shù)次數(shù)的方法,求一個(gè)數(shù)的近似平方根,這個(gè)平方根是一個(gè)整數(shù)。如求17的平方根,可以用17相繼減去奇數(shù)1、3、5、7、,

18、當(dāng)結(jié)果為負(fù)數(shù)時(shí)停止,即: 17-1-3-5-7-90可以看出,17在減去5次奇數(shù)后結(jié)果變?yōu)樨?fù)數(shù),可以近似認(rèn)為17的平方根在4與5之間,計(jì)算NUM的平方根,如果NUM=17,則ANS中保存結(jié)果4。 4.以下面形式定義一個(gè)長(zhǎng)整數(shù),其所占用字節(jié)數(shù)由N得到,比如128位的數(shù)5746352413DE89674523BC9A78563412H定義成: NUM DB 12H,34H,56H,78H,9AH,0BCH,23H,45H DB 67H,89H,0DEH,13H,24H,35H,46H,57H N DB $-NUM試編寫一個(gè)程序,實(shí)現(xiàn)對(duì)N字節(jié)的NUM的值求補(bǔ),并把求補(bǔ)后的值仍保存在NUM中。 5.根據(jù)中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)GB 11643-1999中有關(guān)公民身份號(hào)碼的規(guī)定,公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位數(shù)字校驗(yàn)碼組成。排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論