Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 5th, 2012  |  syntax: None  |  size: 1.25 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. What's wrong with following assembly code?
  2. ;read the string
  3. mov ah,0x0A ;read
  4. mov dx,buffer   ;pointer to buffer
  5. int 0x21
  6.  
  7. ;newline
  8. mov ah,2
  9. mov dl,10
  10. int 0x21
  11. mov dl,13
  12. int 0x21
  13.  
  14. ;put $ sign at end of string
  15. mov bx,buffer+1
  16. mov dx,buffer+2
  17. add dl,byte[bx]
  18. mov bx,dx
  19. mov byte[bx],'$'
  20.  
  21. ;output
  22. mov dx,buffer+2
  23. mov ah,9
  24. int 0x21
  25.  
  26. ;exit
  27. mov ah,0x4c
  28. int 0x21
  29.  
  30. ;buffer
  31.  
  32. buffer:
  33. db 255  ;len of buffer
  34. db 0    ;num of char read
  35. db 255  ;actual string
  36.  
  37. ;############################
  38.        
  39. bits 16 ;; you have to tell NASM to generate 16-bit code
  40. org 0x100 ;; you have to start generating addresses at 0x100 for .COM programs
  41.  
  42. ;read the string
  43. mov ah,0x0A ;read
  44. mov dx,buffer   ;pointer to buffer
  45. int 0x21
  46.  
  47. ;newline
  48. mov ah,2
  49. mov dl,10
  50. int 0x21
  51. mov dl,13
  52. int 0x21
  53.  
  54. ;put $ sign at end of string
  55. mov bx,buffer+1
  56. mov dx,buffer+2
  57. add dl,byte[bx]
  58. adc dh, 0 ;; we're doing 16-bit+8-bit=16-bit addition
  59. mov bx,dx
  60. mov byte[bx],'$'
  61.  
  62. ;output
  63. mov dx,buffer+2
  64. mov ah,9
  65. int 0x21
  66.  
  67. ;exit
  68. mov ah,0x4c
  69. int 0x21
  70.  
  71. ;buffer
  72.  
  73. buffer:
  74. db 254; 255  ;len of buffer ;; my doc says the range is 1 to 254
  75. ; db 0    ;num of char read ;; you only need to reserve memory
  76. ; db 255  ;actual string ;; you only need to reserve memory
  77. resb 255 ;; reserve memory (1 for length, 254 for text)
  78. resb 1 ;; reserve memory for "$"