




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第1章 基礎(chǔ)知識檢測點1.1(第9頁)(1)1個CPU的尋址能力為8KB,那么它的地址總線的寬度為13位。(2)1KB的存儲器有1024個存儲單元,存儲單元的編號從0到1023。(3)1KB的存儲器可以存儲8192(213)個bit,1024個Byte。(4)1GB是1073741824(230)個Byte、1MB是1048576(220)個Byte、1KB是1024(210)個Byte。(5)8080、8088、80296、80386的地址總線寬度分別為16根、20根、24根、32根,則它們的尋址能力分別為: 64(KB)、1(MB)、16(MB)、4(GB)。(6)8080、8088、80
2、86、80286、80386的數(shù)據(jù)總線寬度分別為8根、8根、16根、16根、32根。則它們一次可以傳送的數(shù)據(jù)為: 1(B)、1(B)、2(B)、2(B)、4(B)。(7)從內(nèi)存中讀取1024字節(jié)的數(shù)據(jù),8086至少要讀512次,80386至少要讀256次。(8)在存儲器中,數(shù)據(jù)和程序以 二進制形式存放。解題過程:(1)1KB=1024B,8KB=1024B*8=2N,N=13。(2)存儲器的容量是以字節(jié)為最小單位來計算的,1KB=1024B。(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。(4)1GB=1073741824B(即230)1MB=
3、1048576B(即220)1KB=1024B(即210)。(5)一個CPU有N根地址線,則可以說這個CPU的地址總線的寬度為N。這樣的CPU最多可以尋找2的N次方個內(nèi)存單元。(一個內(nèi)存單元=1Byte)。(6)8根數(shù)據(jù)總線一次可以傳送8位二進制數(shù)據(jù)(即一個字節(jié))。(7)8086的數(shù)據(jù)總線寬度為16根(即一次傳送的數(shù)據(jù)為2B)1024B/2B=512,同理1024B/4B=256。(8) 在存儲器中指令和數(shù)據(jù)沒有任何區(qū)別,都是二進制信息。第2章 寄存器檢測點2.1(第19頁)(1)寫出每條匯編指令執(zhí)行后相關(guān)寄存器中的值。第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第
4、五空:826CH第六空:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第十一空:D882H第十二空:D888H第十三空:D810H第十四空:6246H(2)只能使用目前學(xué)過的匯編指令,最多使用4條指令,編程計算2的4次方。解答如下:mov ax,2add ax,axadd ax,axadd ax,ax檢測點2.2(第25頁)(1)00010H,1000FH(2)1001H,2000H第2題說明:因為段的起始地址要為16的倍數(shù)。所以當(dāng)段地址小于1001H或大于2000H時CPU都無法尋到。(1)解題過程:物理地址SA*16+EA EA的變化范圍為0hffffh
5、 物理地址范圍為(SA*16+0h)(SA*16+ffffh) 現(xiàn)在SA=0001h,那么尋址范圍為 (0001h*16+0h)(0001h*16+ffffh) =0010h1000fh (2)解題過程:物理地址SA*16+EA 20000hSA*16+EA SA=(20000h-EA)/16=2000h-EA/16 EA取最大值時,SA=2000h-ffffh/16=1001h,SA為最小值 EA取最小值時,SA=2000h-0h/16=2000h,SA為最大值 這里的ffffH/16=fffh是通過WIN自帶計算器算的 按位移來算確實應(yīng)該為fff.fh,這里小數(shù)點后的f應(yīng)該是省略了 單就除
6、法來說,應(yīng)有商和余數(shù),但此題要求的是地址最大和最小,所以余數(shù)忽略了 如果根據(jù)位移的算法(段地址*1616進制左移一位),小數(shù)點后應(yīng)該是不能省略的 我們可以反過來再思考下,如果SA為1000h的話,小數(shù)點后省略 SA=1000h,EA取最大ffffh,物理地址為1ffffh,將無法尋到20000H單元 這道題不應(yīng)看成是單純的計算題檢測點2.3(第35頁)答:CPU修改了4次IP的值。情況如下:第1次:執(zhí)行完mov ax,bx后第2次:執(zhí)行完sub ax,ax后 ;該步執(zhí)行后,寄存器ax清零第3次:讀入jmp ax后第4次:執(zhí)行完jmp ax后 ;連續(xù)兩步ip均為0最后IP的值為0 ;最后IP的值
7、為0000H,因為最后ax中的值為0000H,所以IP中的值也為0000H 第3章 寄存器(內(nèi)存訪問)檢測點3.1(第55頁)(1)(題目:略)第一空:2662H第二空:E626H第三空:E626H第四空:2662H第五空:D6E6H第六空:FD48H第七空:2C14H第八空:0000H第九空:00E6H第十空:0000H第十一空:0026H第十二空:000CH提示:此題可在DEBUG中利用E命令在本機上按照題目中所給出的內(nèi)存單元及其數(shù)據(jù)進行相應(yīng)地修改,然后再用A命令進行寫入(題目中所給出的)相應(yīng)的匯編指令,最后再進行T命令進行逐步執(zhí)行,以查看相應(yīng)結(jié)果。(2) 指令序列如下:mov ax,66
8、22hjmp 0ff0:0100mov ax,2000hmov ds,axmov ax,0008mov ax,00022.寫出CPU執(zhí)行每條指令后,CS、IP和相關(guān)寄存器中的數(shù)值。指令序列寄存器CSIPDSAXBX初始值2000H00001000H00mov ax,6622h2000H00031000H6622H0000jmp 0ff0:01001000H00001000H6622H0000mov ax,2000h1000H00031000H2000H0000mov ds,ax1000H00052000H2000H0000mov ax,00081000H00082000HC389H0000mo
9、v ax,00021000H000B2000HEA66H0000 3.再次體會:數(shù)據(jù)和程序有區(qū)別嗎?如何確定內(nèi)存中的信息哪些是數(shù)據(jù),哪些是程序?檢測點3.2(第70頁)(1)補全下面的程序,使其可以將10000H-1000FH中的8個字,逆序拷貝到20000H-2000FH中。mov ax,1000H mov ds,ax mov ax,2000H mov ss,ax mov sp,10h (2)補全下面的程序,使其可以將10000H-1000FH中的8個字,逆序拷貝到20000H-2000FH中。 mov ax,2000H mov ds, ax mov ax,1000Hmov ss, ax m
10、ov sp,0 檢測點6.1(第129頁)(1)下面的程序?qū)崿F(xiàn)依次用內(nèi)存0:00:15單元中的內(nèi)容改寫程序中的數(shù)據(jù),完成程序:assume cs:codesgcodesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart: mov ax,0 mov ds, ax mov bx,0 mov cx,8 s: mov ax,bx mov cs:bx,ax add bx,2 loop s mov ax,4c00h int 21hcodesg endsend start(2)下面的程序?qū)崿F(xiàn)依次用內(nèi)存0:00:15單元中的內(nèi)容改
11、寫程序中的數(shù)據(jù),數(shù)據(jù)的傳送用棧來進行。??臻g設(shè)置在程序內(nèi)。完成程序:assume cs:codesgcodesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h dw 0,0,0,0,0,0,0,0,0,0 ;10個字單元用作??臻g,所以??臻g的大小為10*2=20,化成16進制即為14start: mov ax, codesg;或mov ax, cs mov ss ,ax mov sp, 24h ;或mov sp, 36 ;10h+14h=24h mov ax,0 mov ds, ax mov bx,0 mov cx,8
12、s: push bx pop cs:bx ;或 pop ss:bx ;關(guān)鍵在于cs與ss此時地址相同 add bx,2 loop s mov ax,4c00h int 21hcodesg endsend start檢測點9.1(第183頁)(1) 程序如下:assume cs:codedata segment dw 2 dup (0)data endscode segment start: mov ax, data mov ds, ax mov bx,0 jmp word ptr bx+1code endsend start若要使jmp指令執(zhí)行后,CS:IP指向程序的第一條指令,在data段中
13、應(yīng)該定義哪些數(shù)據(jù)? 答案db 3 dup (0)答案dw 2 dup (0)答案dd 0jmp word ptr bx+1為段內(nèi)轉(zhuǎn)移,要CS:IP指向程序的第一條指令,應(yīng)設(shè)置ds:bx+1的字單元(2個字節(jié))存放數(shù)據(jù)應(yīng)為0,則(ip)=ds:bx+1=0簡單來說就是,只要ds:bx+1起始地址的兩個字節(jié)為0就可以了 (2) 程序如下:assume cs:codedata segment dd 12345678hdata endscode segment start: mov ax,data mov ds,ax mov bx,0 mov bx, bx ;或mov bx, word ptr 0 ;
14、或mov bx, offset start mov bx+2, cs ;或mov bx+2, cs ;或mov bx+2, seg code jmp dword ptr ds:0code endsend start補全程序,使用jmp指令執(zhí)行后,CS:IP指向程序的第一條指令。 第一格可填mov bx,bx mov bx,word ptr 0 mov bx,offset start等。第二格可填mov bx+2,cs mov bx+2,cs mov bx+2,seg code等。解析:jmp dword ptr ds:0為段間轉(zhuǎn)移,(cs)=(內(nèi)存單元地址+2),(ip)=(內(nèi)存單元地址),要
15、CS:IP指向程序的第一條指令,第一條程序地址cs:0,應(yīng)設(shè)置CS:IP指向cs:0程序中的mov bx,bx這條指令,是將ip設(shè)置為0 mov bx+2,cs,將cs這個段地址放入內(nèi)存單元 執(zhí)行后,cs應(yīng)該不變,只調(diào)整ip為0,(ip)=ds:0=0(3)用Debug查看內(nèi)存,結(jié)果如下:2000:1000 BE 00 06 00 00 00 .則此時,CPU執(zhí)行指令:mov ax,2000hmov es,axjmp dword ptr es:1000h后,(cs)= 0006H,(ip)= 00BEH 解析:jmp dword ptr為段間轉(zhuǎn)移,高位存放段地址,低位存放偏移地址(cs)=(內(nèi)
16、存單元地址+2),(ip)=(內(nèi)存單元地址) 根據(jù)書P16,對于寄存器AX,AH為高位(前1字節(jié)為高位),AL為低位(后1字節(jié)為低位)推算出(內(nèi)存單元地址)=00BEH,(內(nèi)存單元地址+2)=0006H根據(jù)書P182,高位存放段地址(后2個字節(jié)為高位),低位存放偏移地址(前2個字節(jié)為低位)(cs)=(內(nèi)存單元地址+2),(ip)=(內(nèi)存單元地址)推算出(cs)=0006H,(ip)=00BEH.檢測點9.2(第184頁)補全編程,利用jcxz指令,實現(xiàn)在內(nèi)存2000H段中查找第一個值為0的字節(jié),找到后,將它的偏移地址存儲在dx中。assume cs:codecode segment start
17、: mov ax,2000h mov ds, ax mov bx,0 s: mov ch,0 mov cl,bx jcxz ok ;當(dāng)cx=0時,CS:IP指向OK inc bx jmp short s ok: mov dx, bx mov ax ,4c00h int 21hcode endsend start檢測點9.3(第185頁)補全編程,利用loop指令,實現(xiàn)在內(nèi)存2000H段中查找第一個值為0的字節(jié),找到后,將它的偏移地址存儲在dx中。assume cs:codecode segmentstart: mov ax,2000h mov ds, ax mov bx,0 s:mov cl,
18、bx mov ch,0 inc cx ;只要保證cx>0,才能執(zhí)行l(wèi)oop循環(huán),切記! inc bx loop s ok: dec bx mov dx, bx mov ax,4c00h int 21hcode endsend start檢測點10.1(第191頁)補全程序,實現(xiàn)從內(nèi)存1000:0000處開始執(zhí)行指令。assume cs:codestack segment db 16 dup (0)stack endscode segmentstart: mov ax, stack mov ss, ax mov sp,16 mov ax, 1000h push ax mov ax, 0 p
19、ush ax retfcode endsend start 執(zhí)行reft指令時,相當(dāng)于進行:pop ippop cs根據(jù)棧先進后出原則,應(yīng)先將段地址cs入棧,再將偏移地址ip入棧。檢測點10.2(第192頁)下面的程序執(zhí)行后,ax中的數(shù)值為多少?內(nèi)存地址 機器碼 匯編指令 執(zhí)行后情況1000:0 b8 00 00 mov ax,0 ax=0 ip指向1000:31000:3 e8 01 00 call s pop ip ip指向1000:71000:6 40 inc ax1000:7 58 s:pop ax ax=6 用debug進行跟蹤確認,“call標號”是將該指令后的第一個字節(jié)偏移地址入
20、棧,再轉(zhuǎn)到標號處執(zhí)行指令。檢測點10.3(第192頁)下面的程序執(zhí)行后,ax中的數(shù)值為多少? 內(nèi)存地址 機器碼 匯編指令 執(zhí)行后情況 1000:0 b8 00 00 mov ax,0 ax=0, ip指向1000:31000:3 9a 09 00 00 10 call far ptr s pop cs,pop ip,ip指向1000:91000:8 40 inc ax1000:9 58 s: pop ax ax=8h add ax,ax ax=10h pop bx bx=1000h add ax,bx ax=1010h檢測點10.4(第194頁)下面的程序執(zhí)行后,ax中的數(shù)值為多少?內(nèi)存地址
21、機器碼 匯編指令 執(zhí)行后情況1000:0 b8 06 00 mov ax,6 ax=6, ip指向1000:31000:3 ff d0 call ax pop ip, ip指向1000:61000:5 40 inc ax1000:6 58 mov bp ,sp bp=sp=fffeh ;棧頂?shù)牡刂窚p去2,存放著05h add ax,bp ax=6+ds:(fffeh)=6+5=0bh 用debug進行跟蹤確認,“call ax(16位reg)”是先將該指令后的第一個字節(jié)偏移地址ip入棧,再轉(zhuǎn)到偏移地址為ax(16位reg)處執(zhí)行指令。編譯無法通過,只能理論分析.檢測點10.5(第195頁)(1
22、) 下面的程序執(zhí)行后,ax中的數(shù)值為多少?assume cs:codestack segment dw 8 dup (0)stack endscode segmentstart: mov ax, stack mov ss, ax mov sp,16 mov ds, ax mov ax,0 call word ptr ds:0eh inc ax inc axinc ax mov ax,4c00hint 21hcode endsend start 當(dāng)程序執(zhí)行call word ptr ds:0EH語句時,相當(dāng)于進行: 1: PUSH IP(此時IP的值為CALL語句下一條語句的偏移地址,也就是IN
23、C AX的偏移地址) 2: JMP WORD PTR SS(因為DS等于SS):0EH,此時程序跳轉(zhuǎn)到CS:SS:OEH處執(zhí)行,因為 SS:0EH的值為0,所以跳轉(zhuǎn)到CS:0處開始執(zhí)行,也就是程序的第一條語句MOV AX, STACK,當(dāng)程序再一次執(zhí)行到call word ptr ds:0EH時,又進行上面的兩步,但是此時SS:OEH的值已經(jīng)不是0了,而是上一次執(zhí) 行PUSH IP時,壓入的IP的值,而這個IP正是CALL語句下一條語句的偏移地址,也就是INC AX的偏移地址.所以程序跳轉(zhuǎn)到語句INC AX處執(zhí)行,所以AX的值為3. (2) 下面的程序執(zhí)行后,ax和bx中的數(shù)值為多少?assu
24、me cs:codesgstack segment dw 8 dup(0)stack endscodesg segmentstart: mov ax, stack mov ss, ax mov sp,10h mov word ptr ss:0,offset s ;(ss:0)=1ah mov ss:2,cs ;(ss:2)=cs call dword ptr ss:0 ;cs入棧,ip=19h入棧,轉(zhuǎn)到cs:1ah處執(zhí)行指令 ; ss:0ch = 19h ss:0eh = cs nops: mov ax, offset s ;ax=1ah sub ax, ss:0ch ;ax=1ah-(ss:
25、0ch)=1ah-19h=1 mov bx, cs ;bx=cs0c5bh sub bx, ss:0eh ;bx=cs-cs=0 mov ax,4c00h int 21hcodesg endsend start檢測點11.1(第216頁)寫出下面每條指令執(zhí)行后,ZF、PF、SF、等標志位的值。 sub al,al al=0h ZF=1 PF=1 SF=0 mov al,1 al=1h ;mov 指令不改變標志位 ZF=1 PF=1 SF=0 push ax ax=1h ;push 指令不改變標志位 ZF=1 PF=1 SF=0 pop bx bx=1h ;pop 指令不改變標志位 ZF=1 P
26、F=1 SF=0 add al,bl al=2h ;al = 00000010b ZF=0 PF=0 SF=0 add al,10 al=12h ;al = 00001010b ZF=0 PF=1 SF=0 mul al ax=144h ;ax = 10010000b ZF=0 PF=1 SF=0檢測點11.2(第219頁)寫出下面每條指令執(zhí)行后,ZF、PF、SF、CF、OF等標志位的值。 al CF OF SF ZF PFsub al, al 0h 0000 0000b 0 0 0 1 1mov al,10h 10h 0010 0000b 0 0 0 1 1add al,90h a0h 10
27、10 0000b 0 0 1 0 1mov al,80h 80h 1000 0000b 0 0 1 0 1add al,80h 0h 0000 0000b 1 1 0 1 1mov al,0fch 0fch 1111 1100b 1 1 0 1 1add al,05h 1h 0000 0001b 1 0 0 0 0mov al,7dh 7dh 1111 1101b 1 0 0 0 0add al,0bh 88h 1000 1000b 0 1 1 0 1檢測點涉及的相關(guān)內(nèi)容:CF是flag的第0位,進位標志位,記錄無符號運算結(jié)果是否有進/借位,結(jié)果有進/借位時,SF=1OF是flag的第11位,
28、溢出標志位,記錄有符號運算結(jié)果是否溢出,結(jié)果溢出時,OF=1正數(shù)相加超出127,負數(shù)相加超出-128,兩種情況OF均置為1SF是flag的第7位,符號標志位,記錄有符號運算結(jié)果是否為負數(shù),結(jié)果為負數(shù)時,SF=1ZF是flag的第6位,零標志位,記錄指令執(zhí)行后結(jié)果是否為0,結(jié)果為0時,ZF=1PF是flag的第2位,奇偶標志位,記錄指令執(zhí)行后結(jié)果二進制中1的個數(shù)是否為偶數(shù),結(jié)果為偶數(shù)時,PF=1add、sub、mul、div、inc、or、and等運算指令影響標志寄存器mov、push、pop等傳送指令對標志寄存器沒影響。檢測點11.3(第229頁)(1) 補全下面的程序,統(tǒng)計F000:0處32
29、個字節(jié)中,大小在32,128的數(shù)據(jù)個數(shù)。 mov ax,0f000h mov ds, ax mov bx,0 ;ds: bx指向第一個字節(jié) mov dx,0 ;初始化累加器 mov cx,32s: mov al,bx cmp al,32 ;和32進行比較 jb s0 ;如果低于al轉(zhuǎn)到s0,繼續(xù)循環(huán) cmp al,128 ;和128進行比較 ja s0 ;如果高于al轉(zhuǎn)到s0,繼續(xù)循環(huán) inc dxs0: inc bxloop s(2) 補全下面的程序,統(tǒng)計F000:0處32個字節(jié)中,大小在(32,128)的數(shù)據(jù)個數(shù)。 mov ax,0f000h mov ds,ax mov bx,0 ;ds:
30、bx指向第一個字節(jié) mov dx,0 ;初始化累加器 mov cx,32s: mov al,bx cmp al,32 ;和32進行比較 jna s0 ;如果不高于al轉(zhuǎn)到s0,繼續(xù)循環(huán) cmp al,128 ;和128進行比較 jnb s0 ;如果不低于al轉(zhuǎn)到s0,繼續(xù)循環(huán) inc dxs0: inc bx loop s 32,128是閉區(qū)間,包括兩端點的值 (32,128)是開區(qū)間,不包括兩端點的值檢測點11.4(第233頁)下面指令執(zhí)行后,(ax)= 45hmov ax,0 push ax popf ;將psw清零mov ax,0fff0Hadd ax,0010hpushf ;將psw入
31、棧,psw的值0000000 01000101,這里已經(jīng)講學(xué)過的標志位都標 識出來了,沒學(xué)過的全部都當(dāng)作0分析了,結(jié)果應(yīng)該也是對的 pop ax ;出棧ax的值就是00000000 01000101and al,11000101B ;且運算 al:01000101and ah,00001000B ;且運算 al:00000000分析:這里面主要還是講解pushf和popf,就是psw的值入棧,psw16個字節(jié),我們學(xué)習(xí)了6個,但是df在本程序里面一直沒有賦值,所以是0,其他的標志位沒有學(xué)習(xí),在下面的且運算的時候全部歸零了,所以最后的結(jié)果就是0045H,也就是最后我分析的00000000 010
32、00101。檢測點12.1(第238頁)(1)用debug查看內(nèi)存,情況如下:0000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00則3號中斷源對應(yīng)的中斷處理程序入口的偏移地址的內(nèi)存單位的地址為: 0070:018b(2)存儲N號中斷源對應(yīng)的中斷處理程序入口的偏移地址的內(nèi)存單元的地址為: 4N存儲N號中斷源對應(yīng)的中斷處理程序入口的段地址的內(nèi)存單元的地址為: 4N+2 檢測點涉及相關(guān)內(nèi)容:一個表項存放一個中斷向量,也就是一個中斷處理程序的入口地址,這個入口地址包括段地址和偏移地址,一個表項占兩個字,高地址存放段地址,低地址存放偏移地址檢
33、測點13.1(第257頁) (1)7ch中斷例程如下:lp: push bp mov bp, sp dec cx jcxz lpret add bp+2,bxlpret: pop bp iret (1)在上面的內(nèi)容中,我們用7ch中斷例程實現(xiàn)loop的功能,則上面的7ch中斷例程所能進行的最大轉(zhuǎn)移位移是多少? 最大位移是FFFFH,即棧底與棧頂之間的位移為最大轉(zhuǎn)移位移可以轉(zhuǎn)移的范圍是 -3276832767(2)用7ch中斷例程完成jmp near ptr s指令功能,用bx向中斷例程傳送轉(zhuǎn)移位移。 應(yīng)用舉例:在屏幕的第12行,顯示data段中以0結(jié)尾的字符串。assume cs:codeda
34、ta segment db 'conversation',0data endscode segmentstart: mov ax, data mov ds, ax mov si,0 mov ax,0b800h mov es, ax mov di,12*160s: cmp byte ptr si,0 je ok mov al,si mov es:di,al inc si add di,2 mov bx ,offset s-offset ok int 7chok: mov ax,4c00h int 21hcode endsend start jmp near ptr s指令的功能為
35、:(ip)=(ip)+16位移,實現(xiàn)段內(nèi)近轉(zhuǎn)移 assume cs:code code segment start:mov ax, cs mov ds, ax mov si, offset do0 ;設(shè)置ds:si指向源地址 mov ax,0 mov es, ax mov di,200h ;設(shè)置es:di指向目標地址 mov cx, offset do0end-offset do0 ;設(shè)置cx為傳輸長度 cld ;設(shè)置傳輸方向為正 rep movsb mov ax,0 mov es ,ax mov word ptr es:7ch*4,200h mov word ptr es:7ch*4+2,0
36、 ;設(shè)置中斷向量表 mov ax,4c00h int 21h do0: push bpmov bp, sp add bp+2,bx ;ok的偏移地址+bx得到s的偏移地址pop bpiretmov ax,4c00h int 21h do0end: nopcode endsend start檢測點13.2(第259頁)判斷下面說法的正誤:(1)我們可以編程改變FFFF:0處的指令,使得CPU不去執(zhí)行BIOS中的硬件系統(tǒng)檢測和初始化程序。答:錯誤,F(xiàn)FFF:0處的內(nèi)容無法改變。(2)int 19h中斷例程,可以由DOS提供。答:錯誤,先調(diào)用int 19h,后啟動DOS。檢測點15.1(第282頁)
37、(1) 仔細分析一下書中的in9中斷例程,看看是否可以精簡一下?其實在我們的int 9中斷例程中,模擬int指令調(diào)用原int 9中斷例程的程序段是可以精簡的,因為在進入中斷例程后,IF和TF都已置0,沒有必要再進行設(shè)置了,對于程序段: pushf ;標志寄存器入棧 pushf pop bx and bh,11111100b ;IF和TF為flag的第9位和第8位 push bx popf ;TF=0,IF=0 call dword ptr ds:0 ;CS、IP入棧;(IP)=ds:0,(CS)=ds:2可以精簡為: pushf ;標志寄存器入棧 call dword ptr ds:0 ;CS
38、、IP入棧;(IP)=ds:0,(CS)=ds:2兩條指令。(2) 仔細分析程序中的主程序,看看有什么潛在的問題?在主程序中,如果在設(shè)置執(zhí)行設(shè)置int 9中斷例程的段地址和偏移地址的指令之間發(fā)生了鍵盤中段,則CPU將轉(zhuǎn)去一個錯誤的地址執(zhí)行,將發(fā)生錯誤。找出這樣的程序段,改寫他們,排除潛在的問題。 ;在中斷向量表中設(shè)置新的int 9中斷例程的入口地址 cli ;設(shè)置IF0屏蔽中斷 mov word ptr es:9*4,offset int9 mov es:9*4+2,cs sti ;設(shè)置IF1不屏蔽中斷 更改后的int 9中斷例程:;功能:在屏幕中間依次顯示'a''z&
39、#39;,并讓人看清。在顯示過程中按下Esc鍵后,改變顯示的顏色。assume cs:codestack segment db 128 dup (0)stack endsdata segment dw 0,0data endscode segmentstart: mov ax, stack mov ss, ax mov sp,128 ;將原來的int 9中斷例程的入口地址保存在ds:0、ds:2單元中 mov ax, data mov ds, ax mov ax,0 mov es, ax push es:9*4 pop ds:0 push es:9*4+2 pop ds:2 ;在中斷向量表中設(shè)置新的int 9中斷例程的入口地址 cli ;設(shè)置IF0屏蔽中斷 mov word ptr es:9*4,offset int9 mov word ptr es:9*4+2,cs sti ;設(shè)置IF1不屏蔽中斷 ;依次顯示'a''z' mov ax,0b800h mov es ,ax mov ah, 'a's: mov es:160*12+40*2,ah ;第12行第40列 inc ah cmp ah, 'z' jnb s ;將中斷向量表中int 9中斷例程的入口恢復(fù)為原來的地址 mov ax,0 m
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京市海淀區(qū)2024-2025學(xué)年高二(上)期末生物試卷(含解析)
- 牛皮燈拆除施工方案
- 單法蘭液位計施工方案
- 2025年車手賽前測試試題及答案
- 2025年制程質(zhì)量經(jīng)理面試題及答案
- 不認可專項施工方案
- cme基準利率預(yù)測值
- 等離子處理3m膠
- 地震計算機技術(shù)預(yù)測相關(guān)的政策
- androidstudio課程設(shè)計報告
- 2025年1月浙江高考英語聽力試題真題完整版(含答案+文本+MP3)
- 2025年內(nèi)蒙古興安盟突泉縣選聘生態(tài)護林員450人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年興湘集團全資子公司招聘筆試參考題庫含答案解析
- 蒙醫(yī)學(xué)中的推拿暖宮療法與婦科保健技巧
- 湖北省生態(tài)環(huán)保有限公司招聘筆試沖刺題2025
- 廣告牌的制作安裝及售后服務(wù)方案
- 2024年建筑幕墻工程檢測理論考試題庫(精練300題)
- 2025屆廣東省廣州市實驗中學(xué)高三第一次調(diào)研測試數(shù)學(xué)試卷含解析
- 2024護理分級新標準
- 《5G時代萬物皆智聯(lián)》演講課件
- 造型的表現(xiàn)力 課件 2024-2025學(xué)年人教版初中美術(shù)八年級上冊
評論
0/150
提交評論