Re: [問題] 執行時出現NTVDM CPU 已經遇到不合法的 …

看板ASM (組合語言)作者 (冷杉林)時間17年前 (2007/12/31 22:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我和原po遇到同樣的問題 本來也是按一下指定的熱鍵(設為f10)會跳出那個視窗 後來我在display那裡修改之後就變成按兩次會這樣, 據說熱鍵enter熱鍵會有奇怪的事發生…… 然後這題變成bouns了,貼程式碼上來不會有問題吧? TITLE test1 (test.asm) ; Program Description: ; Author: ; Date Created: ; Last Modification Date: CR EQU 0dh LF EQU 0ah .model small .DATA act BYTE 0 beginpos BYTE ? str_store BYTE ' a',16 dup('$') leng_store WORD 0 str_out1 BYTE 'HotKey Test!',0 .CODE start: jmp init main: sti push bp mov bp, sp push ax push bx push cx push dx push si push di push ds getkey: mov ax, @data mov ds, ax in al, 60h cmp al, 44h je display ;cmp al, 14h ;je backspace cmp al, 1ch je _enter ;cmp al, 39 ;je space store: cmp act, 00h jne readc mov act, 01h mov ah, 03h mov bh, 00h int 10h mov beginpos, dl readc: jmp _exit _enter: cmp act, 01h jne _nothing mov ah, 03h mov bh, 00h int 10h sub dl, beginpos mov cl, dl mov ch, 0 mov leng_store, cx mov dl, beginpos mov si, 0 nextchar: mov ah, 02h int 10h mov ah, 08h int 10h mov str_store[si], al mov ah, 02h inc dl inc si loop nextchar mov act, 00h _nothing: jmp _exit display: cmp act, 01h ;就是加接下來這兩行,也就是說 jne _exit ;如果什麼都沒有打就什麼事也不會發生 mov ah, 09h mov dx, offset str_store int 21h _exit: pop ds pop di pop si pop dx pop cx pop bx pop ax pop bp jmp cs:[old_int9] old_int9 DWORD ? init: mov ax, 3509h int 21h mov ax, @CODE mov ds, ax mov word ptr old_int9, bx mov word ptr old_int9+2, es mov dx, offset main mov ax, 2509h int 21h mov ah, 62h int 21h mov dx, SEG zseg sub dx, bx mov ax, 3100h int 21h .STACK zseg SEGMENT zseg ENDS END start -- ★ 辰星! 歡迎加入五行戰鬥牌的奇幻世界! 太白! 歲星! 官方網站:(內有討論區) 鎮星!熒惑! http://cfe.myweb.hinet.net/ 「當蒼茫天穹中 那並非最閃亮 PTT台大社版:NTU-CFE 但卻最純淨的五顆星 連成一線時, 天與地的共鳴 將永不止歇,其力量可至無限。」 ψrexkimta -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.223.155
文章代碼(AID): #17UFp_e6 (ASM)
文章代碼(AID): #17UFp_e6 (ASM)