匯編語(yǔ)言王爽第二版課后答案_第1頁(yè)
匯編語(yǔ)言王爽第二版課后答案_第2頁(yè)
匯編語(yǔ)言王爽第二版課后答案_第3頁(yè)
已閱讀5頁(yè),還剩12頁(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、第一章基礎(chǔ)知識(shí)檢測(cè)點(diǎn)1.1(第8頁(yè))(1) 13 1024,0,1023(3)8192,1024(4)2A30,2A20,2A10(5)64,1,16,4(6)1,1,2,2,4(7)512,256(8)二進(jìn)制注意:1. 第4題中的符號(hào)'A'指求冪運(yùn)算(如:2A30指2的30次方)第二章寄存器(CPU工作原理)檢測(cè)點(diǎn)2.1(第18頁(yè))(1)寫岀每條匯編指令執(zhí)行后相關(guān)寄存器中的值。第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第五空:826CH第六空:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第 一空:D882H第

2、十二空:D888H第十三空:D810H第十四空:6246H 只能使用目前學(xué)過(guò)的匯編指令,最多使用4條指令,編程計(jì)算2的4次方。解答如下:mov ax,2add ax,axadd ax,axadd ax,ax檢測(cè)點(diǎn)2.2(第23頁(yè))(1)00010H,1000FH 1001H,2000H第2題說(shuō)明:因?yàn)槎蔚钠鹗嫉刂芬獮?16的倍數(shù)。所以當(dāng)段地址小于1001H或大于2000H時(shí)CPU都無(wú)法尋到。檢測(cè)點(diǎn)2.3(第33頁(yè))答:CPU修改了 4次IP的值。情況如下:第1次:執(zhí)行完 mov ax,bx后第2次:執(zhí)行完sub ax,ax后第3次:讀入jmp ax后第4次:執(zhí)行完jmp ax后最后IP的值為0

3、實(shí)驗(yàn)1查看CPU和存,用機(jī)器指令和匯編指 令編程(第33頁(yè))1. 預(yù)備知識(shí):Debug的使用此部分略2. 實(shí)驗(yàn)任務(wù)(第43頁(yè))(1)此部分略此部分略通過(guò)DEBUG中的D命令查看到主板的生產(chǎn)日期以 月、日、年,分隔符為'/'的格式存儲(chǔ)在存 ffff:0005ffff:000C(共8個(gè)字節(jié)單元中)處。此生產(chǎn)日期不能被改變,因?yàn)槠渚哂兄蛔x屬性。通過(guò)向存中的顯存寫入數(shù)據(jù),使計(jì)算機(jī)根據(jù)寫入的 數(shù)據(jù)進(jìn)行ASCII轉(zhuǎn)換,并將轉(zhuǎn)換后且可打印的字符 輸岀到屏幕上。注:關(guān)于顯存的詳細(xì)討論不在此題圍第三章 寄存器(存訪問(wèn))檢測(cè)點(diǎn)3.1(第52頁(yè))(1)(題目:略)第一空:2662H第二空:E626H

4、第三空:E626H第四空:2662H第五空:D6E6H第六空:FD48H第七空:2C14H第八空:0000H第九空:00E6H第十空:0000H第 一空:0026H第十二空:000CH提示:此題可在DEBUGS利用E命令在本機(jī)上按照 題目中所給出的存單元及其數(shù)據(jù)進(jìn)行相應(yīng)地修改, 然后再用A命令進(jìn)行寫入(題目中所給出的)相應(yīng)的 匯編指令,最后再進(jìn)行 T命令進(jìn)行逐步執(zhí)行,以查 看相應(yīng)結(jié)果。指令序列寄存器CSIPDSAXBX初始值2000卜00001000卜00mov ax,6622h2000卜00031000卜6622H0000jmp OffO:O1OO1000卜00001000卜6622H000

5、0mov ax,2000h1000卜00031000卜2000H0000mov ds,ax1000卜00052000卜2000H0000mov ax,00081000卜00082000卜C389卜10000mov ax,00021000卜000B2000卜EA66H00002.寫出CPU執(zhí)行每條指令后,CS IP和相關(guān)寄存器 中的數(shù)值。3.再次體會(huì):數(shù)據(jù)和程序有區(qū)別嗎?如何確定 存中的信息哪些是數(shù)據(jù),哪些是程序?答:(略)2. 實(shí)驗(yàn)任務(wù)(1)使用Debug,將下面的程序段寫入存,逐條執(zhí)行, 根據(jù)指令執(zhí)行后的實(shí)際運(yùn)行情況填空。從第一空開始依次如下:1. 指令序列如下: mov ax,6622h

6、jmp OffO:O1OO mov ax,2OOOh mov ds,axmov ax,0008 mov ax,OOO2檢測(cè)點(diǎn)3.2(第66頁(yè))mov ax,2000Hmov ss,axmov sp,1OHmov ax,1OOOHmov ss,axmov sp,OH實(shí)驗(yàn)2用機(jī)器指令和匯編指令編程(第70頁(yè))1. 預(yù)備知識(shí):Debug的使用 此部分略ax=5BEAax=5CCAbx=30F0bx=6029sp=FE 220FE 5CCAsp=FC 220FC 6029sp=FE 6029sp=100H 5CCAsp=FE 220FE 30F0sp=FC 220FC 2E39說(shuō)明:此題可能因機(jī)子軟、

7、硬件環(huán)境不同而導(dǎo)致答 案不一致!(2)仔細(xì)觀察圖3.19的實(shí)驗(yàn)過(guò)程,然后分析:為什么2000:02000:f 中的容會(huì)發(fā)生改變?答:因?yàn)橛肨指令進(jìn)行調(diào)試時(shí),會(huì)產(chǎn)生中斷。而為 了保護(hù)現(xiàn)場(chǎng),CPU則先將標(biāo)志寄存器進(jìn)棧、再把當(dāng) 前CS的值進(jìn)棧,最后將IP的值進(jìn)棧。關(guān)于中斷 的詳細(xì)容的討論不在此題圍 第五章BX和loop指令實(shí)驗(yàn)4 BX和loop的使用(第113頁(yè))(1)編程,向存0:2000:23F依次傳送數(shù)據(jù) 063(3FH)。程序如下:assume cs:codesgcodesg segmentmov ax,0020hmov ds,axmov bx,0mov dl,0mov cx,40hs:mo

8、v bx,dlinc dlinc bxloop sint 21hcodesg endsend編程,向存0:2000:23F依次傳送數(shù)據(jù)063(3FH),程序中只能使用9條指令,9條指令中包括“ mov ax,4c00h ”和 “int 21h ”。程序如下:assume cs:codesgcodesg segmentmov ax,0020hmov ds,axmov bl,0mov cx,40hs:mov bx,blinc blloop smov ax,4c00hint 21hcodesg endsend 下面的程序的功能是將“ mov ax,4c00h ”之前 的指令復(fù)制到存0:200處,補(bǔ)全

9、程序。上機(jī)調(diào)試, 跟蹤運(yùn)行結(jié)果。assume cs:codecode segmentmov ax, code ;code 為所填寫的數(shù)據(jù)mov ds,axmov ax,0020hmov bx,0mov cx, 18h ;18h為所填寫的數(shù)據(jù)s: mov al,bxmov es:bx,alinc bxloop smov ax,4c00hint 21hcode endsend提示:1. 因?yàn)轭}目的要把代碼段的指令當(dāng)作數(shù)據(jù),復(fù)制到目的地址。所以,源數(shù)據(jù)段 ds和代碼段cs相同, 通過(guò) mov ax,code/mov ds,ax ('/'符號(hào)是指兩條指令的分隔)來(lái)設(shè)置源數(shù)據(jù)段。2. 可

10、以先假設(shè)要復(fù)制8位1h0ffh數(shù)據(jù)(因?yàn)槲覀內(nèi)庋劬涂梢钥闯龃顺绦虻拈L(zhǎng)度不可能大于 0ffh個(gè) 字節(jié))的字節(jié)數(shù)(如:10h),把程序補(bǔ)全,以便通過(guò) 編譯。這時(shí)我們以準(zhǔn)確的第一空所填容 code與假 想的第二空容10h將程序補(bǔ)充完整并將其編譯、連 接、運(yùn)行,接著進(jìn)行 DEBUG在DEBUGS我們可用 R命令查看CX的值,這時(shí)我們可以看到CX的值為1D,由此我們可以算岀該程序的長(zhǎng)度1Dh-5h=18h,之所以減5是為了滿足題目的要求 (因?yàn)閙ov ax,4c00h/int 21h 這兩條指令的長(zhǎng)度等 于5)第六章包含多個(gè)段的程序檢測(cè)點(diǎn)6.1(第119頁(yè))(1)assume cs:codesgcode

11、sg segme ntdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hmov ds,axmov bx,0mov cx,8s:mov ax,bxmov cs:bx,ax ;此條指令為所填指令add bx,2loop smov ax,4c00hint 21hcodesg endsend startassume cs:codesgcodesg segme ntdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw 0,0,0,0,0start:mov ax, cs ;cs為所填第一空mov ss,axm

12、ov sp,1ah ;此條指令為所填第二空mov ax,0mov ds,axmov bx,0s:push bxpop cs:bx ;此條指令為所填第三空add bx,2loop smov ax,4c00hint 21hcodesg endsend start實(shí)驗(yàn)5編寫、調(diào)試具有多個(gè)段的程序(第123頁(yè))1. 保持不變2. <考慮不同機(jī)子環(huán)境不同,答案無(wú)法統(tǒng)一>3. X-2,X-11. 保持不變2. <考慮不同機(jī)子環(huán)境不同,答案無(wú)法統(tǒng)一>3. X-2,X-14. (N/16+1)*16 說(shuō)明:N/16只取整數(shù)部分1. 保持不變2. <考慮不同機(jī)子環(huán)境不同,答案無(wú)法統(tǒng)

13、一>3. X+3,X+4loop si答:第3個(gè)仍然可以正確執(zhí)行。因?yàn)槿绻?end指令后的標(biāo)號(hào)start去掉后,編譯器便會(huì) 順序執(zhí)行程序。換句話說(shuō):當(dāng)未給編譯器預(yù)先 的通知,要求其從哪開始執(zhí)行程序時(shí),編譯器就自動(dòng)以至上向下的順序進(jìn)行編譯執(zhí)行源 程序。(5)完整程序如下:assume cs:codea segme ntdb 1,2,3,4,5,6,7,8a endsb segme ntdb 1,2,3,4,5,6,7,8b endsc segme ntdb 0,0,0,0,0,0,0,0c en dscode segme ntsta rt:mov ax,amov es,axmov ax,

14、cmov ds,axmov bx,0mov cx,8s1:mov ax,es:bxadd bx,axmov ax,bmov es,ax mov ds,ax mov bx,0 mov cx,8s2:mov ax,es:bx add bx,ax add bx,2 loop s2 mov ax,4c00h int 21h code ends end start(6)完整程序如下: assume cs:code a segme ntdw 1,2,3,4,5,6,7,8 a en ds b segme ntdw 0,0,0,0,0,0,0,0 b en ds code segme nt sta rt:a

15、dd bx,2mov ss,axmov sp,10hdb '1. display 'mov ax,adb 2 brows'mov ds,axdb 3 replace 'mov bx,0db '4. modify'datasg endsmov cx,8codesg segme nts:push bxsta rt:add bx,2mov ax,stacksgloop smov ss,axmov ax,4c00hmov sp,16int 21hmov ax,datasgcode endsmov ds,axend startmov bx,0第七章更靈活的

16、定位存地址的方法mov cx,4實(shí)驗(yàn)6實(shí)踐課程中的程序(第147頁(yè))s:;夕卜循環(huán)push cx編程:完成問(wèn)題中的程序。mov si,3問(wèn)題7.9完整程序如下:mov cx,4s0:;循環(huán)assume cs:codesg,ss:stacksg,ds:datasgmov al,bx+siand al,11011111bstacksg segme ntmov bx+si,aldw 0,0,0,0,0,0,0,0inc sistacksg endsloop s0add bx,16datasg segme ntpop cxdw 11542,14430,45257,17800loop smov ax,4

17、c00h int 21h codesg ends end start第八章數(shù)據(jù)處理的兩個(gè)基本問(wèn)題實(shí)驗(yàn)7尋址方式在結(jié)構(gòu)化數(shù)據(jù)訪問(wèn)中的應(yīng)用(第160頁(yè))完整程序如下:assume cs:codesg,ds:data,es:tabledata segme ntdb'1975','1976','1977','1978','1979','1980','1981','1982','1983'db'1984','1985','

18、1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995'以上是表示21年的21個(gè)字符串dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,590827,803530,1183000,1843000,27 59000,3753000,4649000,5937000;以上是

19、表示21年公司總收的21個(gè)dword型數(shù)據(jù)dw3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226;以上是表示21年公司雇員人數(shù)的21個(gè)word型數(shù)據(jù)data endstable segme ntdb 21 dup('year summ ne ?')table endscodesg segme ntsta rt:mov ax,datamov ds,axmov ax,tablemov es,axmov bx,0mov si,0mov di,0mov cx,21s:;進(jìn)入循環(huán)mov al,bxmov es

20、:di,almov al,bx+1mov es:di+1,almov al,bx+2mov es:di+2,al mov es:di+3,al;以上8句的作用是存放年份mov ax,54hbx;第一個(gè)'年收入的段基址為54Hmov dx,56hbxmov es:5hdi,axmov es:7hdi,dx;以上4句的作用是存放公司總收入mov ax,0A8hsi;第一個(gè)'人數(shù)'的段基址為0A8Hmov es:0Ahdi,ax;以上2句是存放公司的人數(shù)mov ax,54hbxdiv word ptr ds:0A8hsimov es:0dhdi,ax;以上3句是存放人均收入a

21、dd bx,4add si,2add di,16;以上3句是為下一次循環(huán)時(shí)存放數(shù)據(jù)做準(zhǔn)備;3個(gè)寄存器遞增的速度決定了所要存取的數(shù)據(jù)的位置的偏移地址loop s ;跳到標(biāo)號(hào)s處mov ax,4c00hint 21h程序說(shuō)明:此程序雖然可以達(dá)到預(yù)期效果(讀者可以自行調(diào)試驗(yàn)證),但實(shí)現(xiàn)方法比較簡(jiǎn)單, 讀者有興趣的話可以尋找一種 更具結(jié)構(gòu)化的 設(shè)計(jì)方法來(lái)完成。第九章轉(zhuǎn)移指令的原理檢測(cè)點(diǎn)9.1(第170頁(yè)) 若要使jmp指令執(zhí)行后,CS:IP指向程序 的第一條指令,在 data段中應(yīng)該定義哪些數(shù) 據(jù)?完整程序如下:assume cs:code,ds:datadata segme ntdb 0,0,0da

22、ta endscode segme ntstart:mov ax,datamov ds,axmov bx,0jmp word ptr bx+1;段間接轉(zhuǎn)移code endsend start;解題理由:為了使IP的值經(jīng)跳轉(zhuǎn)后變?yōu)?,則需保證ds:bx+1處的字型單元數(shù)據(jù)為0000H,;所以定義3個(gè)字節(jié)型數(shù)據(jù)0就符合“應(yīng)該” 的要求(2)補(bǔ)全程序,使jmp指令執(zhí)行后,CS:IP指 向程序的第一條指令。codesg ends end start完整程序如下:assume cs:code,ds:datadata segme ntdd 12345678hdata endscode segme ntst

23、art:mov ax,datamov ds,axmov bx,0mov bx, bx ;源操作數(shù)bx為所填容mov bx+2, cs ;源操作數(shù)cs為所填容jmp dword ptr ds:0code endsend start 用Debug查看存,結(jié)果如下:2000:1000 BE 00 06 00 00 00 則此時(shí),CPU執(zhí)行指令:mov ax,2000Hmov es,axjmp dword ptr es:1000H后,(CS)=? , (IP)=?提示:為了使本機(jī)環(huán)境2000:1000至2000:1005 中的數(shù)據(jù)與題目中所給岀的數(shù)據(jù) 一致,可以通過(guò)編寫程序來(lái)完成,完整程序如下:ass

24、ume cs:codecode segme ntsta rt:mov ax,2000hmov ds,axmov bx,1000hmov word ptr bx.0,0BEHmov word ptr bx.2,6hmov word ptr bx.4,0;運(yùn)行完上6句則使2000:1000-2000:1005中的數(shù)據(jù)依次為:BE,00,06,00,00,00;以上6句則按題目中的數(shù)據(jù)進(jìn)行初始 化,以便使運(yùn)行環(huán)境符合題目要求;mov ax,2000hmov es,axjmp dword ptr es:1000hcode endsend start經(jīng)上機(jī)調(diào)試得岀:CS=0006H,IP=00BEH檢測(cè)

25、點(diǎn)9.2(第172頁(yè))從標(biāo)號(hào)s處開始所要填寫的四條指令依次如下:第一條指令:mov cl,bx第二條指令:mov ch,0第三條指令:jcxz ok第四條指令:inc bx檢測(cè)點(diǎn)9.3(第173頁(yè))實(shí)驗(yàn)8分析一個(gè)奇怪的程序(第174頁(yè))分析下面的程序,在運(yùn)行前思考:以正確返回嗎?運(yùn)行后再思考:為什么是這種結(jié)果?通過(guò)這個(gè)程序加深對(duì)相關(guān)容的理解。assume cs:codesgcodesg segme ntmov ax,4c00hint 21hsta rt:mov ax,0s:nopnopmov di,offset smov si,offset s2mov ax,cs:simov cs:di,ax

26、s0:jmp short ss1:mov ax,0int 21hmov ax,0s2:jmp short s1這個(gè)程序可補(bǔ)全程序,利用loop指令,實(shí)現(xiàn)在存 2000H 段中查找第一個(gè)值為0的byte,找到后,將它的偏移地址存儲(chǔ)在dx中。assume cs:codecode segme ntstart:mov ax,2000hmov ds,axmov bx,0s:mov cl,bxmov ch,0inc cx ;此條指令為題目要求補(bǔ)全的指令inc bxloopok:dec bxmov dx,bxmov ax,4c00hint 21hcode endsend start解答提醒:此題可用假設(shè)法來(lái)

27、完成(比如設(shè) 2000:0000 至 2000:0003 的容依次為:1E 06 000A)。此題要注意loop指令的使用規(guī)則,同時(shí) 要注意區(qū)別存單元與存單元中的數(shù)據(jù)(或 容)的不同。nop實(shí)驗(yàn)9根據(jù)材料編程(第175頁(yè))codesg endsend start程序可以正常返回。詳細(xì)分析:在此題中較為深入地考察了 段直接短轉(zhuǎn)移形如:jmp short 標(biāo)號(hào)的概念。我們知道程序中:mov di,offset smov si,offset s2mov ax,cs:simov cs:di,ax四條指令的作用是將標(biāo)號(hào)s2處的一條指令復(fù)制到標(biāo)號(hào)s處。這時(shí)我們應(yīng)該關(guān)心所復(fù)制的語(yǔ) 句"jmp sh

28、ort s1"對(duì)程序的影響:我們知道在段直接短轉(zhuǎn)移指令所對(duì)應(yīng)的機(jī)器碼中,并不包含轉(zhuǎn)移的目的地址,而包含的是轉(zhuǎn)移的位移量(如對(duì)此概念還不太熟悉,請(qǐng)查看書中第 167 頁(yè)的容)。也就是說(shuō),在源程序的編譯過(guò)程中, 編譯器遇到段直接短轉(zhuǎn)移形如:jmp short 標(biāo)號(hào)時(shí)就會(huì)自動(dòng)算岀其要跳轉(zhuǎn)的位移量,以 便程序在執(zhí)行段直接短轉(zhuǎn)移的指令時(shí)就根 據(jù)位移量進(jìn)行(向前或向后)跳轉(zhuǎn)。通過(guò)調(diào)試中 的U命令我們可以看到指令s2:jmp shorts1'所對(duì)應(yīng)的機(jī)器碼是 EBF6, F6h(-10d的補(bǔ)碼) 就是跳轉(zhuǎn)的位移量此位移量也可由指令 's2:jmp short s1'處的偏移

29、地址 18h減去指令's2:jmp short s1'后一個(gè)字節(jié)的偏移地址22h得岀。這時(shí)我們就知道了其實(shí)復(fù)制到標(biāo) 號(hào)s處的指令所對(duì)應(yīng)的機(jī)器碼就是EBF6(剛好取代兩個(gè)nop所對(duì)應(yīng)的機(jī)器碼),它的作用就 是將當(dāng)前IP向前移動(dòng)10個(gè)字節(jié)。當(dāng)程序執(zhí)行 標(biāo)號(hào)SO處的指令后,程序便跳到標(biāo)號(hào)s處接著執(zhí)行標(biāo)號(hào)s處的指令。s處的指令的作用是 向前跳10字節(jié),于是便跳到了代碼中的第一 條指令,繼續(xù)執(zhí)行后便實(shí)現(xiàn)了程序的正常返 回。assume cs:code,ds:data,ss:stackdata segme ntdb 'welcome to mas m!'定義要顯示的字符串(

30、共16字節(jié))db 02h,24h,71h;定義三種顏色屬性data endsstack segme ntdw 8 dup(0)stack endscode segme ntsta rt:mov ax,datamov ds,axmov ax,stackmov ss,axmov sp,10hmov bx,0mov di,0mov ax ,0b872h; 算岀屏幕第12行中間的顯存的段起始位置放入ax中mov cx,3 ;外循環(huán)為3次,因?yàn)?要顯示三個(gè)字符串s3:push cx ;三個(gè)進(jìn)棧操作為外循環(huán)s3保存相關(guān)寄存器的值push di注意:此程序不會(huì)也不可能執(zhí)行標(biāo)號(hào)s1處后的指令。push ax

31、;以防止它們的值在循環(huán)中被破壞mov es,ax ;此時(shí)es為屏幕第12行中間的顯存的段起始位置mov si,0mov di,0mov cx,1Oh ; 循環(huán)為10h次,因 為一個(gè)字符串中含10h個(gè)字節(jié)s1: mov al,ds:bx+simov es:bx+di,alinc siadd di,2loop si;此循環(huán)實(shí)現(xiàn)偶地址中存放字符mov si,1 ;si的值設(shè)為1,從而為在顯存奇地址中存放字符的顏色屬性做準(zhǔn)備pop di ; 將di的值恢復(fù)成進(jìn) 入循環(huán)之前的時(shí)候的值mov al,ds:10hbx+di;取顏色屬性源OP尋址方式:相對(duì)基址變址mov cx,10h ;第二個(gè)循環(huán)也為10h次

32、s2: mov es:bx+si,aladd si,2loop s2; 此循環(huán)實(shí)現(xiàn)奇地址中存放字符的顏色屬性; 以下4句為下一趟外循環(huán)做準(zhǔn)備inc dipop axadd ax,0ah址設(shè)為當(dāng)前行的下一行;將顯存的段起始地;當(dāng)于在偏移地址中加了在段地址中加0ah,相0a0h(=160d)pop cxloop s3t mov ax,4c00hint 21hcode endsend start第十章call 和ret指令檢測(cè)點(diǎn)10.1(第179頁(yè))第一空:1000h第二空:0提示:此題等效于把CS的值改為1000H,把IP的值改為0。因?yàn)閞etf指令進(jìn)行的操作是 先將IP出棧,再將CS出棧,所以在

33、進(jìn)棧時(shí)應(yīng) 當(dāng)進(jìn)行相反的操作。檢測(cè)點(diǎn)10.2(第181頁(yè))ax=6提示:在執(zhí)行指令"call s"時(shí),IP的值變?yōu)?, 接著進(jìn)棧。此時(shí)程序直接執(zhí)行指令 "s:pop ax",這就等于把棧中IP的值放入ax中。所 以答案為6。關(guān)于更多的call指令的問(wèn)題請(qǐng) 看附注中的“錯(cuò)誤指出”中的第 6條。檢測(cè)點(diǎn)10.3(第181頁(yè))ax=1010提示:1. 寄存器中存放的值為16進(jìn)制數(shù)2. 關(guān)于更多的call指令的問(wèn)題請(qǐng)看附注中的 “錯(cuò)誤指出”中的第 6條。檢測(cè)點(diǎn)10.4(第182頁(yè))ax=OOOBmov ax,datamov cl,0cah ;cl中存放顏色屬性(0c

34、ah為紅底高亮閃爍綠色屬性)提示:關(guān)于更多的 call指令的問(wèn)題請(qǐng)看附注 中的“錯(cuò)誤指出”中的第 6條。檢測(cè)點(diǎn)10.5(第183頁(yè))答:ax中的數(shù)值為3提示:不能利用T命令進(jìn)行調(diào)試,貝U改用U和 G命令來(lái)調(diào)試。可用U命令先查看指令"movax,4c00h"處的偏移地址,然后用G命令直接執(zhí)行到指令"mov ax,4c00h"的偏移地址處。ax=1bx=0提示:關(guān)于更多的 call指令的問(wèn)題請(qǐng)看附注 中的“錯(cuò)誤指出”中的第 6條。實(shí)驗(yàn)10編寫子程序(第194頁(yè))1.顯示子程序完整程序如下:data segme ntdb 'Welcome to mas

35、m!',0data ends code segme ntassume cs:code,ds:datastart:mov dh,1;dh裝行號(hào)(圍:1-25)mov dl,1;dl裝列號(hào)(圍:1-80)注:每超過(guò)80等于行號(hào)自動(dòng)加1mov ds,axmov si,0call show_strmov ax,4c00hint 21hshow_str:;顯示字符串的子程序定義開始push cxpush simov al,0A0hdec dh ;行號(hào)在顯存中下標(biāo)從0開始,所以減1mul dhmov bx,axmov al,2mul dlsub ax,2;列號(hào)在顯存中下標(biāo)從0開始,又因?yàn)榕甲止?jié)存放字符,所以減2add bx,ax;此時(shí)bx中存放的是行與列號(hào)的偏移地址mov ax,0B800hmov es,ax ;es中存放的是顯存的第0頁(yè)(共0-7頁(yè))的起始的段地址mov di,0mov al,clmov ch,0s:mov cl,ds:sijcxz okmov es:bx+di,cl ;偶地址存放字符mov es:bx+di+1,al ;

溫馨提示

  • 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)論