鱼C论坛

 找回密码
 立即注册
查看: 1784|回复: 2

[已解决]这个程序删除的会出现崩溃现象

[复制链接]
发表于 2019-4-15 17:30:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在这里设置了一个:
cmp ah, 0e
je backspace
然后在按回车但是为什么一按回车就崩溃呢?
我感觉我的逻辑没有错误的地方啊

  1. assume cs:code, ds:data
  2. data segment
  3.                 table db 128 dup (0)
  4. data ends

  5. code segment
  6. start:
  7.                 mov si, 0
  8.                 mov ax, 0b800h
  9.                 mov es, ax
  10.                 mov bx, 0
  11. start_1:
  12.                 mov ah, 0
  13.                 int 16h
  14.                
  15.                 cmp ah, 1ch
  16.                 je over_end
  17.                
  18.                 cmp ah, 0eh
  19.                 je backspace
  20.                
  21.                 call input
  22.                
  23.                 jmp short start_1
  24. over_end:
  25.                 mov ax, 4c00h
  26.                 int 21h
  27.                
  28. input: ;判断是否为数字
  29.                 cmp al, 30h
  30.                 jae input_1                ;无符号大于等于0则转移
  31.                 jmp short input_end
  32. input_1:
  33.                 cmp al, 39h                ;无符号小于等于9则转移
  34.                 jbe input_4
  35. input_2: ;判断是否为小写英文字母
  36.                 cmp al, 61h
  37.                 jae input_3
  38.                 jmp short input_end
  39. input_3:
  40.                 cmp al, 7ah
  41.                 jbe input_4
  42.                 jmp short input_end
  43. input_4:
  44.                 mov byte ptr table[si], al
  45.                 mov byte ptr es:[bx + si + 1920], al
  46.                 mov byte ptr es:[bx + si + 1920 + 1], 2
  47.                 inc bx
  48.                 inc si
  49. input_end:
  50.                 ret
  51.                
  52. backspace:   ;这块这块删除后会出现崩溃不知道原因哪位大神能给看看指点一下麻烦了
  53.                 dec bx
  54.                 dec si
  55.                 mov byte ptr table[si],0
  56.                 mov byte ptr es:[bx + si + 1920], ' '
  57.                 mov byte ptr es:[bx + si + 1920 + 1], 0
  58.                 jmp short start_1
  59. code ends
  60. end start
复制代码
最佳答案
2019-4-15 22:38:57
  1. assume cs:code, ds:data
  2. data segment
  3.                 table db 128 dup (0)
  4. data ends

  5. code segment
  6. start:
  7.                 ; ^_^
  8.                 mov        ax, data
  9.                 mov        ds, ax
  10.                
  11.                 mov si, 0
  12.                 mov ax, 0b800h
  13.                 mov es, ax
  14.                 mov bx, 0
  15. start_1:
  16.                 mov ah, 0
  17.                 int 16h
  18.                
  19.                 cmp ah, 1ch
  20.                 je over_end
  21.                
  22.                 cmp ah, 0eh
  23.                 je backspace
  24.                
  25.                 call input
  26.                
  27.                 jmp short start_1
  28. over_end:
  29.                 mov ax, 4c00h
  30.                 int 21h
  31.                
  32. input: ;判断是否为数字
  33.                 cmp al, 30h
  34.                 jae input_1                ;无符号大于等于0则转移
  35.                 jmp short input_end
  36. input_1:
  37.                 cmp al, 39h                ;无符号小于等于9则转移
  38.                 jbe input_4
  39. input_2: ;判断是否为小写英文字母
  40.                 cmp al, 61h
  41.                 jae input_3
  42.                 jmp short input_end
  43. input_3:
  44.                 cmp al, 7ah
  45.                 jbe input_4
  46.                 jmp short input_end
  47. input_4:
  48.                 mov byte ptr table[si], al
  49.                 mov byte ptr es:[bx + si + 1920], al
  50.                 mov byte ptr es:[bx + si + 1920 + 1], 2
  51.                 inc bx
  52.                 inc si
  53. input_end:
  54.                 ret
  55.                
  56. backspace:   ;这块这块删除后会出现崩溃不知道原因哪位大神能给看看指点一下麻烦了
  57.                 dec bx
  58.                 dec si
  59.                 mov byte ptr table[si],0
  60.                 mov byte ptr es:[bx + si + 1920], ' '
  61.                 mov byte ptr es:[bx + si + 1920 + 1], 0
  62.                 jmp short start_1
  63. code ends
  64. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-15 22:38:57 | 显示全部楼层    本楼为最佳答案   
  1. assume cs:code, ds:data
  2. data segment
  3.                 table db 128 dup (0)
  4. data ends

  5. code segment
  6. start:
  7.                 ; ^_^
  8.                 mov        ax, data
  9.                 mov        ds, ax
  10.                
  11.                 mov si, 0
  12.                 mov ax, 0b800h
  13.                 mov es, ax
  14.                 mov bx, 0
  15. start_1:
  16.                 mov ah, 0
  17.                 int 16h
  18.                
  19.                 cmp ah, 1ch
  20.                 je over_end
  21.                
  22.                 cmp ah, 0eh
  23.                 je backspace
  24.                
  25.                 call input
  26.                
  27.                 jmp short start_1
  28. over_end:
  29.                 mov ax, 4c00h
  30.                 int 21h
  31.                
  32. input: ;判断是否为数字
  33.                 cmp al, 30h
  34.                 jae input_1                ;无符号大于等于0则转移
  35.                 jmp short input_end
  36. input_1:
  37.                 cmp al, 39h                ;无符号小于等于9则转移
  38.                 jbe input_4
  39. input_2: ;判断是否为小写英文字母
  40.                 cmp al, 61h
  41.                 jae input_3
  42.                 jmp short input_end
  43. input_3:
  44.                 cmp al, 7ah
  45.                 jbe input_4
  46.                 jmp short input_end
  47. input_4:
  48.                 mov byte ptr table[si], al
  49.                 mov byte ptr es:[bx + si + 1920], al
  50.                 mov byte ptr es:[bx + si + 1920 + 1], 2
  51.                 inc bx
  52.                 inc si
  53. input_end:
  54.                 ret
  55.                
  56. backspace:   ;这块这块删除后会出现崩溃不知道原因哪位大神能给看看指点一下麻烦了
  57.                 dec bx
  58.                 dec si
  59.                 mov byte ptr table[si],0
  60.                 mov byte ptr es:[bx + si + 1920], ' '
  61.                 mov byte ptr es:[bx + si + 1920 + 1], 0
  62.                 jmp short start_1
  63. code ends
  64. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 17:20:49 | 显示全部楼层

谢谢疏忽大意了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 01:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表