鸿 网 互 联 www.68idc.cn

王爽<汇编语言> 第十七章 实验十七

来源:互联网 作者:佚名 时间:2015-08-13 07:40
assume cs:codesg,ds:datasg datasg segment mystack db 1024 dup(0);自定义堆栈 top dw 0h;栈顶 x db 10;列号 y db 10;行号 datasg ends stacksg segment db 128 dup(0) stacksg ends codesg segment ;-------------------------------模拟输入 ic:mov ah,0
  1. assume cs:codesg,ds:datasg
  2. datasg segment
  3. mystack db 1024 dup(0);自定义堆栈
  4. top dw 0h;栈顶
  5. x db 10;列号
  6. y db 10;行号
  7. datasg ends
  8. stacksg segment
  9. db 128 dup(0)
  10. stacksg ends
  11. codesg segment
  12. ;-------------------------------模拟输入
  13. ic:mov ah,0
  14. int 16h
  15. cmp ah,0eh
  16. jne ic_enter;退格
  17. call ic_pop
  18. call ic_show
  19. jmp loops
  20. ic_enter:cmp ah,1ch;回车键
  21. jne ic_p
  22. jmp ic_over
  23. ic_p:mov ah,0
  24. push ax
  25. call ic_push
  26. call ic_show
  27. loops:jmp ic
  28. ic_over:ret
  29. ;-------------------------------字符进栈
  30. ic_push:push bp
  31. mov bp,sp
  32. push ax
  33. push bx
  34. mov ax,ss:4h[bp]
  35. mov bx,top
  36. mov mystack[bx],al
  37. inc top
  38. pop bx
  39. pop ax
  40. pop bp
  41. ret 2h
  42. ;-------------------------------字符出栈
  43. ic_pop:cmp top,0
  44. je ic_not_char_p
  45. dec top
  46. ic_not_char_p:ret
  47. ;-------------------------------字符显示
  48. ic_show:push ax
  49. push bx
  50. push si
  51. push es
  52. mov ax,0b800h
  53. mov es,ax
  54. mov al,y
  55. mov bl,160
  56. mul bl
  57. push ax;列数
  58. mov al,x
  59. mov bl,2
  60. mul bl
  61. pop si
  62. add si,ax;显示位置
  63. cmp top,0
  64. jne show_start;空列表
  65. mov byte ptr es:[si],'_'
  66. mov byte ptr es:[si+2],' '
  67. show_start:mov bx,0
  68. ic_show_loop:cmp bx,top
  69. jnb ic_not_char_s;读尽则跳
  70. mov al,mystack[bx]
  71. mov es:[si],al
  72. mov byte ptr es:[si+1],12;字体颜色
  73. mov byte ptr es:[si+2],'_'
  74. mov byte ptr es:[si+3],8
  75. mov byte ptr es:[si+4],' '
  76. inc bx
  77. add si,2
  78. loop ic_show_loop
  79. ic_not_char_s:pop es
  80. pop si
  81. pop bx
  82. pop ax
  83. ret
  84. main_start:mov ax,datasg
  85. mov ds,ax
  86. mov ax,stacksg
  87. mov ss,ax
  88. mov sp,128
  89. call ic;调用
  90. mov ax,4c00h
  91. int 21h
  92. codesg ends
  93. end main_start
网友评论
<