![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
|
主題工具 | 顯示模式 |
|
|
#6 (permalink) |
|
管理版主
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
看了老半天...
後來翻書才找出問題癥結 cmp、or 及 inc 指令會影響 ZF(零值旗標,當運算結果為零時ZF=1) je 指令會參考 ZF作抉擇 (ZF=1時即為等於 執行跳躍動作) 種種複雜的 ZF變動 如果之前 ZF=1 cmp al, 11111111b 結果 又不對ZF作清除 (cmp是一個減的測試動作 al-ffH 不等於0,ZF不動 ※如果ZF=1 保持1 如果為0 保持0) 則還是會執行(跳到) "小->大" 所以你的結果才會 每隔一個字元才作一次 "大->小" 只要在 cmp al, 11111111b 前將 ZF強制變為 0 即可 針對 FL 旗號暫存器的第6bit作 and FL,1111111110111111b 即可 以上因為沒有MASM作實際測試 所以是不是果真如此...不敢打包票 ^^|| |
|
|
送花文章: 2060,
|