汇编学习(五)8086汇编拾遗 (4)

冷不防 2022-08-22 05:57 291阅读 0赞
  1. 汇编模块化成程序语言设计
  2. 使用寄存器来存储参数和结果是最常用使用的方法。对于存放参数的寄存器和存放结果的寄存器,调用者和子程序的读写操作恰恰相反,调用者将参数送入寄存器,从结果寄存器中取到返回值;子程序从参数寄存器中取到参数,将返回值送入结果寄存器中。
  3. 上边这段话,看起来像是很冗余,但是却贯穿汇编语言始终8086X86都是如此。
  4. 一个转换大小写的程序
  5. assume cs:code data segment db 'helloworld' data ends code segment start: mov ax,data mov ds,ax mov si,0 mov cx,10 call capt mov ax,4c00h int 21h capt: and byte ptr [si] ,11011111b inc si loop capt ret code ends end start

以上,将hello world 转换成大写。 一个使用函数显示字符串的例子实验10练习题,自己写的,不是太好。

  1. assume cs:code
  2. data segment
  3. db 'welcome to masm!',0
  4. data ends
  5. code segment
  6. start:
  7. mov ax,data
  8. mov ds,ax ;set data
  9. mov si,0
  10. mov dh,8
  11. mov dl,3
  12. mov cl,2
  13. call show_ptr
  14. mov ax,4c00h
  15. int 21h
  16. show_ptr:
  17. push ax
  18. push bx
  19. push es
  20. push si
  21. push cx
  22. mov ax,0b800h
  23. mov es,ax ;set es view segment
  24. mov ax,160
  25. mul dh
  26. mov bl,dl
  27. mov bh,0
  28. add ax,bx
  29. add ax,bx
  30. mov di,ax
  31. mov ah,cl
  32. mov si,0
  33. x:
  34. mov cl,ds:[si]
  35. mov ch,0
  36. jcxz ok
  37. mov al,cl
  38. mov es:[di],ax
  39. inc si
  40. inc di
  41. inc di
  42. jmp x
  43. ok :
  44. pop cx
  45. pop si
  46. pop es
  47. pop bx
  48. pop ax
  49. ret
  50. code ends
  51. end start

打印数字1266

  1. assume cs:code
  2. data segment
  3. db 10 dup(0)
  4. data ends
  5. code segment
  6. start:
  7. mov ax,12666
  8. mov bx,data
  9. mov ds,bx
  10. mov si,0
  11. call dtoc
  12. mov dh,8
  13. mov dl,3
  14. mov cl,2
  15. call show_ptr
  16. mov ax,4c00h
  17. int 21h
  18. dtoc:
  19. push ax
  20. push bx
  21. push cx
  22. push dx
  23. push si
  24. mov bx,0
  25. x:
  26. mov dx,0
  27. mov cx,10
  28. div cx
  29. mov cx,ax
  30. add dx,'0'
  31. push dx
  32. inc bx
  33. jcxz z
  34. jmp x
  35. z:
  36. mov cx,bx
  37. x1:
  38. pop ds:[si]
  39. inc si
  40. loop x1
  41. pop si
  42. pop dx
  43. pop cx
  44. pop bx
  45. pop ax
  46. ret
  47. show_ptr:
  48. push ax
  49. push cx
  50. push dx
  51. push es
  52. push si
  53. push di
  54. mov ax,0b800h
  55. mov es,ax
  56. dec dh
  57. mov al,160
  58. mul dh
  59. add dl,dl
  60. mov dh,0
  61. add ax,dx
  62. mov di,ax
  63. mov ah,cl
  64. x2:
  65. mov cl,ds:[si]
  66. mov ch,0
  67. jcxz F
  68. mov al,cl
  69. mov es:[di],ax
  70. inc si
  71. inc di
  72. inc di
  73. jmp x2
  74. F:
  75. pop di
  76. pop si
  77. pop es
  78. pop dx
  79. pop cx
  80. pop ax
  81. ret
  82. code ends
  83. end start

发表评论

表情:
评论列表 (有 0 条评论,291人围观)

还没有评论,来说两句吧...

相关阅读