Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130718
  • 博文数量: 30
  • 博客积分: 972
  • 博客等级: 中士
  • 技术积分: 332
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-08 10:04
文章分类

全部博文(30)

文章存档

2012年(30)

分类: WINDOWS

2012-07-20 21:27:32


点击(此处)折叠或打开

  1. assume cs:code
  2. code segment
  3. start:
  4. push ax
  5. getstrs:
  6. mov ah,0
  7. int 16h;调用16号中断0号子程序,读取键盘输入
  8. cmp al,20h;判断键盘输入的是否为字符
  9. jb nochar;不是就跳转
  10. mov ah,0;如果是字符,设置ah=0(表示要入栈)
  11. call charstack;调用栈操作
  12. mov ah,2
  13. call charstack
  14. jmp getstrs
  15. nochar:
  16. cmp ah,0eh;是否为“Backspace”键
  17. je backspace;是就跳转
  18. cmp ah,1ch
  19. je enterkey
  20. jmp getstrs
  21. backspace:
  22. mov ah,1;设置ah=1,表示出栈
  23. call charstack
  24. mov ah,2;设置ah=2,表示显示栈内容
  25. call charstack
  26. jmp getstrs
  27. enterkey:
  28. mov al,0;如果是“Enter”键,设置al=0
  29. mov ah,0
  30. call charstack;调用0号功能且获取字符为“0”
  31. mov ah,2
  32. call charstack
  33. pop ax
  34. ret
  35. charstack:jmp short charstart
  36. table dw charpush,charpop,charshow
  37. top dw 0
  38. charstart:
  39. push bx
  40. push dx
  41. push di
  42. push es
  43. cmp ah,2
  44. ja sret
  45. mov bl,ah
  46. mov bh,0
  47. add bx,bx
  48. jmp word ptr table[bx];根据跳转到指定的标号地址处
  49. charpush:
  50. mov bx,top;保存栈顶SP至bx
  51. mov [si][bx],al;将键盘输入移动至栈内
  52. inc top;移动栈顶SP
  53. jmp sret
  54. charpop:
  55. cmp top,0
  56. je sret
  57. dec top
  58. mov bx,top
  59. mov al,[si][bx];将sp栈顶元素弹出到al中
  60. jmp sret
  61. charshow:
  62. mov bx,0b800h
  63. mov es,bx;es段为显示缓冲区
  64. mov al,160
  65. mov ah,0
  66. mul dh
  67. mov di,ax
  68. add dl,dl
  69. mov dh,0
  70. add di,dx
  71. mov bx,0;设置光标及字符属性
  72. charshows:
  73. cmp bx,top;判断栈是否为空
  74. jne noempty
  75. mov byte ptr es:[di],' '
  76. jmp sret
  77. noempty:
  78. mov al,[si][bx];将栈顶元素复制到al
  79. mov es:[di],al;将元素输出到显示缓冲区
  80. mov byte ptr es:[di+2],' ';字符属性设置
  81. inc bx;栈中下一个字符
  82. add di,2;缓冲区一个字符占2字节
  83. jmp charshows;循环显示栈栈中内容
  84. sret:
  85. pop es
  86. pop di
  87. pop dx
  88. pop bx
  89. ret
  90. code ends
  91. end start

阅读(3046) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~