問答

關(guān)于修改中斷問題

提問者:cbzxhxd2014-01-03 00:00

將中斷21h的02h號功能替換成我自己編寫的一個(gè)中斷處理程序(輸入?yún)?shù)為DL,將DL的值轉(zhuǎn)化為十六進(jìn)制字符串輸出),中斷21h的其它功能不變,代碼如下: stack segment stack dw 1024 dup(?) stack ends data segment info db 'hello',13,10,'$' result db 2 dup(?),32,13

最佳答案

tran proc far ;將DL的值轉(zhuǎn)化為十六進(jìn)制數(shù)輸出 cmp ah,02h ;當(dāng)AH不為02時(shí),仍執(zhí)行原來的21H功能, jne next ;通過遠(yuǎn)跳轉(zhuǎn)跳來調(diào)用原來的中斷處理程序 錯(cuò)一:字符07H,08H,0AH,0DH不可顯示,需要特別處理。 sti push bx /push cx /push ax xor ax,ax /mov al,dl 錯(cuò)二:XOR是異或運(yùn)算,將影響標(biāo)志位,所以中斷入、出口 要保存標(biāo)志,添上PUSHF/POPF。 mov bl,16 div bl /add al,'0' /add ah,'0' 錯(cuò)三:除、加影響標(biāo)志位,錯(cuò)誤類型同上。 mov result[0],al /mov result[1],ah 錯(cuò)四:!致命錯(cuò)誤*1!應(yīng)用程序調(diào)用時(shí)是顯示1個(gè)字節(jié)字符,你顯示的 卻是一串不定長的字串,這將打亂原來屏幕的字符排列。 push dx lea dx,result 錯(cuò)五:result db 2 dup(?),32,13,10 后面沒有'$'(36D=24H),字串 輸出結(jié)果不可預(yù)期。 mov ah,09h /int 21h 錯(cuò)六:中斷遞歸調(diào)用,后果不可預(yù)期。 pop dx /pop ax /pop cx /pop bx cli iret next: lea si,off ;通過跳轉(zhuǎn)執(zhí)行原來的中斷處理程序 jmp dword ptr [si] 錯(cuò)七:中斷未重定向數(shù)據(jù)段段址,這一跳,必定死機(jī)。 tran endp main proc far mov ax,data /mov ds,ax push es ;保存中斷21H的入口地址在segm:off里 mov ah,35h /mov al,21h /int 21h mov ax,es /mov segm,ax /mov off,bx pop es cli mov ah,25h ;設(shè)置21H為自己編寫的中斷程序tran mov al,21h /lea dx,tran /mov bx,seg tran push ds /mov ds,bx /int 21h pop ds sti lea dx,info /mov ah,09h /int 21h mov dl,61h /mov ah,02h /int 21h ;恢復(fù)原來的21H功能 錯(cuò)七:※ ぶ Ξ ,上一句,我不知所云,無話可說。 cli mov bx,segm /mov dx,off push ds /mov ds,bx mov ah,25h /mov al,21h /int 21h pop ds sti mov ax,4c00h /int 21h 錯(cuò)八:!致命錯(cuò)誤*2!4C是程序正常退出,DOS將收回你運(yùn)行時(shí)的內(nèi)存, 你改了中斷向量表,一走了之;電腦也只好死了死了,一死百了! main endp 下面是完整替換Int21H 2號功能的程序,可資參考。 你可用DEBUG再匯編成一COM文件,保存后運(yùn)行一下。 CS: IP: 匯編代碼: 0B22:0100 EB3E JMP 0140 0B22:0102 0100 ADD [BX+SI],AX 0B22:0104 0000 ADD [BX+SI],AL 0B22:0106 0000 ADD [BX+SI],AL 0B22:0108 0000 ADD [BX+SI],AL 0B22:010A 0000 ADD [BX+SI],AL 0B22:010C 0000 ADD [BX+SI],AL 0B22:010E 0000 ADD [BX+SI],AL 0B22:0110 0000 ADD [BX+SI],AL 0B22:0112 0000 ADD [BX+SI],AL 0B22:0114 0000 ADD [BX+SI],AL 0B22:0116 0000 ADD [BX+SI],AL 0B22:0118 FB STI 0B22:0119 9C PUSHF 0B22:011A 50 PUSH AX 0B22:011B 80FC02 CMP AH,02 0B22:011E 750B JNZ 012B 0B22:0120 88D0 MOV AL,DL 0B22:0122 B40E MOV AH,0E 0B22:0124 CD10 INT 10 0B22:0126 58 POP AX 0B22:0127 9D POPF 0B22:0128 FA CLI 0B22:0129 CF IRET 0B22:012A 90 NOP 0B22:012B 58 POP AX 0B22:012C 9D POPF 0B22:012D 2E CS: 0B22:012E FF2E1001 JMP FAR [0110] 0B22:0132 90 NOP 0B22:0133 0000 ADD [BX+SI],AL 0B22:0135 0000 ADD [BX+SI],AL 0B22:0137 0000 ADD [BX+SI],AL 0B22:0139 0000 ADD [BX+SI],AL 0B22:013B 0000 ADD [BX+SI],AL 0B22:013D 0000 ADD [BX+SI],AL 0B22:013F 000E1FB8 ADD [B81F],CL 0B22:0143 90 NOP 0B22:0144 35CD21 XOR AX,21CD 0B22:0147 83FB00 CMP BX,+00 0B22:014A 740B JZ 0157 0B22:014C BAB001 MOV DX,01B0 0B22:014F B409 MOV AH,09 0B22:0151 CD21 INT 21 0B22:0153 B44C MOV AH,4C 0B22:0155 CD21 INT 21 0B22:0157 B82135 MOV AX,3521 0B22:015A CD21 INT 21 0B22:015C 891E1001 MOV [0110],BX 0B22:0160 8C061201 MOV [0112],ES 0B22:0164 06 PUSH ES 0B22:0165 1F POP DS 0B22:0166 89DA MOV DX,BX 0B22:0168 B89025 MOV AX,2590 0B22:016B CD21 INT 21 0B22:016D 0E PUSH CS 0B22:016E 1F POP DS 0B22:016F BA1801 MOV DX,0118 0B22:0172 B82125 MOV AX,2521 0B22:0175 CD21 INT 21 0B22:0177 BA9001 MOV DX,0190 0B22:017A B409 MOV AH,09 0B22:017C CD21 INT 21 0B22:017E BA3801 MOV DX,0138 0B22:0181 83C20F ADD DX,+0F 0B22:0184 B104 MOV CL,04 0B22:0186 D3EA SHR DX,CL 0B22:0188 B80031 MOV AX,3100 0B22:018B CD21 INT 21 0B22:018D 0000 ADD [BX+SI],AL 0B22:018F 00496E ADD [BX+DI+6E],CL 0B22:0192 7374 JNB 0208 0B22:0194 61 DB 61 0B22:0195 6C DB 6C 0B22:0196 6C DB 6C 0B22:0197 65 DB 65 0B22:0198 64 DB 64 0B22:0199 205365 AND [BP+DI+65],DL 0B22:019C 63 DB 63 0B22:019D 63 DB 63 0B22:019E 65 DB 65 0B22:019F 7373 JNB 0214 0B22:01A1 66 DB 66 0B22:01A2 756C JNZ 0210 0B22:01A4 210D AND [DI],CX 0B22:01A6 0A24 OR AH,[SI] 0B22:01A8 0000 ADD [BX+SI],AL 0B22:01AA 0000 ADD [BX+SI],AL 0B22:01AC 0000 ADD [BX+SI],AL 0B22:01AE 0000 ADD [BX+SI],AL 0B22:01B0 41 INC CX 0B22:01B1 6C DB 6C 0B22:01B2 7265 JB 0219 0B22:01B4 61 DB 61 0B22:01B5 64 DB 64 0B22:01B6 7920 JNS 01D8 0B22:01B8 49 DEC CX 0B22:01B9 6E DB 6E 0B22:01BA 7374 JNB 0230 0B22:01BC 61 DB 61 0B22:01BD 6C DB 6C 0B22:01BE 6C DB 6C 0B22:01BF 65 DB 65 0B22:01C0 64 DB 64 0B22:01C1 210D AND [DI],CX 0B22:01C3 0A24 OR AH,[SI] 0B22:01C5 0000 ADD [BX+SI],AL 0B22:01C7 0000 ADD [BX+SI],AL

回答者:vist20072016-01-03 00:00

DS 6相關(guān)問題

  • 江鈴寶典皮卡是輕型貨車還是微型?多少年報(bào)廢?!

    皮卡車型屬于輕型普通貨車,報(bào)廢年限為十年,可以申請延期,一年兩審,最長到十五年強(qiáng)制報(bào)廢。汽車使用年限報(bào)廢標(biāo)準(zhǔn)  根據(jù)國家經(jīng)濟(jì)貿(mào)易委員會、國家發(fā)展計(jì)劃委員會、公安部、國家環(huán)境保護(hù)總局各階段制定的《汽車報(bào)廢標(biāo)準(zhǔn)》,我國對汽車

    提問者:liuhua802013-03-15

  • 現(xiàn)在2012款榮威550多少錢。抠F不貴的?

    2012款榮威550價(jià)格在12.48萬到18.98萬左右。2012款榮威550的外觀、內(nèi)飾、配置、動力方面升級了,但2012款榮威550價(jià)格同比2011款價(jià)格沒變,2012款榮威550性價(jià)比更高了哈。這幾天和朋友去店里轉(zhuǎn)

    提問者:lrt76001112013-04-08

  • 美國EB5投資移民的具體流程和注意事項(xiàng)

    很復(fù)雜的,需要專業(yè)人士和律師一起操作的, 大致辦理程序如下,不同項(xiàng)目有區(qū)別: 1、投資人與我公司簽署委托投資協(xié)議書。 2、我公司專業(yè)律師設(shè)計(jì)申請方案,根據(jù)申請方案,在我公司的專業(yè)指導(dǎo)下準(zhǔn)備申請材料。 3

    提問者:zhangyali_..2013-12-19

  • 街頭籃球后衛(wèi)要這怎么晃人,才能晃到對方?

    防守必先過人 過人的目的很明確,就是讓人到地,盲目的過人是沒用的。 要使人倒地,必須是對方判斷錯(cuò)誤方向才可以倒地。以你過人的那時(shí)與籃筐之間畫一條直線,如果你最后的動作是向右去的,在最后的那一刻,如果對方站在這條線以左

    提問者:CosmoGirl2016-08-30

  • 美國投資移民時(shí)間要多久

    青島越洋移民提醒您 投資移民美國的要求及其費(fèi)用: 申請人必須年滿18周歲;其配偶及未滿21歲的未婚子女可同時(shí)申辦;不要求申請人任何商業(yè)背景、教育程度及英語語言能力;申請人的資產(chǎn)不一定由申請人本身能力累積所得,贈與

    提問者:zhulin061111092013-09-10

  • nds密室逃脫怎么開啟直線2

      密室逃脫1?給你貼個(gè)攻略好了~  THE 密室脫出-推理番外篇(一周目)  Stage1 序章  移動 位置 物品/使用 合成/查看  右1 床頭桌 得到小記事本 數(shù)字4  右1 沙發(fā)下面 得到抽屜把手  右1 紙簍

    提問者:dssvc2013-09-25

相關(guān)閱讀

DS 6頻道

報(bào)價(jià):19.39-30.19
級別:SUV
排量:1.6T 1.8T 
變速箱:-

車友關(guān)注

最新標(biāo)簽

按字母分類:
ABCDEFGHIJKLMNOPQRSTWXYZ0-9