鱼C论坛

 找回密码
 立即注册
查看: 4346|回复: 11

关于int 10h写像素。「8086」

[复制链接]
发表于 2012-7-9 22:09:47 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
我想利用写像素这个功能来实现8086汇编在屏幕上输出汉字。
我知道图形模式的起始像素地址是在0a0000h。

我有16*16的汉字数据。每个汉字32字节。
但是我如何能够按照我想要的形式显示到屏幕上?都需要准备什么?
字节如何分配?
中断如何设置?

求教各位鱼油。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-10 00:02:48 From FishC Mobile | 显示全部楼层
明天继续蹲点。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-10 08:31:42 From FishC Mobile | 显示全部楼层
蹲点。等解答。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-10 18:37:20 From FishC Mobile | 显示全部楼层
。。。。苍天啊。大地啊!主啊!
救救我吧,
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-15 09:36:04 From FishC Mobile | 显示全部楼层
T∧T。。没人理我,,
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-15 16:50:49 | 显示全部楼层
  1. ;用MASM5.0编译通过. 左右光标键变换汉字,【ESC】退出。(另须下载一个16点阵汉字库HZK16)

  2. ;在DOS下用字符当点阵显示汉字

  3. data segment
  4. DISP_C DB 'H'  ;填充点阵字符
  5. DISP_A DB 05           ;属性字节
  6. qs dw 30h+4*0a0h ;定义显示缓冲区起始位置 30H是列起始位,4为起始行,0A0H

  7. 为每行字节数(含属性字节)
  8. file_n db 'hzk16',0
  9. DB 'HHHHHHHH'
  10. buf  db 32 dup(0)
  11. DB 'HHHHHHHH'
  12. err_s db 0dh,0ah,'Open file HZK16 err! 帮你找了下参考代码。

  13. file_hand dw 0
  14. data ends
  15. code segment
  16.         assume cs:code, ds:data
  17. main proc far
  18. start:
  19. push ds
  20. xor ax,ax
  21. push ax
  22. mov ax,data
  23. mov ds,ax

  24. MOV AH,0FH  ;CLS
  25. INT 10H
  26. MOV AH,0
  27. INT 10H

  28. ;-------------------------
  29. mov ah,3dh  ;open file
  30. mov dx ,offset file_n
  31. mov al,0  ;read
  32. int 21h
  33. jNc OPEN_FILE_OK


  34. mov ah,9
  35. mov dx,offset err_s ;Open file HZK16 err!
  36. int 21h
  37. ret



  38. OPEN_FILE_OK:
  39. mov file_hand,ax ;save file hand



  40. mov ax,'雅'


  41. NN:

  42. PUSH AX   ;汉字进栈

  43. sub ax,0a1a1h
  44. puSh ax
  45. xchg ah,al
  46. xor ah,ah
  47. mov bl,94  ;汉字共94区,每一区94位
  48. mul bl
  49. pop bx
  50. xor bh,bh
  51. add ax,bx
  52. mov bx,32
  53. mul  bx  ;待显示汉字在字库的起始位置是:DX:AX


  54. MOV CX,DX
  55. MOV DX,AX
  56. MOV AH,42H ;移动文件指针到CX:DX位置
  57. MOV AL,0 ;从字库文件HZK16起始位置计算
  58. MOV BX,FILE_HAND
  59. INT 21H


  60. MOV AH,3FH ;READ FILE
  61. MOV BX,FILE_HAND
  62. MOV CX,32 ;READ 32 BYTE
  63. MOV DX,OFFSET BUF
  64. INT 21H


  65. MOV AX,0B800H ;DISP
  66. MOV ES,AX
  67. MOV SI,QS

  68. MOV BX,OFFSET BUF ;READ 16X16 HZK16
  69. MOV CX,16  ;每次读入2字节,需读16次 (共32字节)
  70. N1:
  71. MOV AX,[BX]
  72. XCHG AH,AL
  73. CALL DISP
  74. INC BX
  75. INC BX
  76. ADD SI,0A0H-32  ;DISP NEXT 行
  77. LOOP N1

  78. POP DX   ;汉字出栈

  79. K_1:
  80. MOV AH,1
  81. INT 16H
  82. JZ K_1
  83. CMP AH,4BH  ;<<< 前一个汉字
  84. JZ LEFT
  85. CMP AH,4DH  ;>>> 后一个汉字
  86. JZ RIGHT
  87. CMP AL,1BH  ;<ESC> TO EXIT
  88. JZ EXIT
  89. JMP KEY_C
  90. LEFT:
  91. SUB DL,1
  92. JMP KEY_C
  93. RIGHT:
  94. ADD DL,1

  95. KEY_C:   ;清键盘缓冲区
  96. PUSH DS
  97. PUSH AX
  98. PUSH BX
  99. MOV AX,40H
  100. MOV DS,AX
  101. MOV BX,1AH
  102. MOV AX,[BX]
  103. ADD BX,2
  104. MOV [BX],AX
  105. POP BX
  106. POP AX
  107. POP DS

  108. MOV AX,DX  ;循环前将汉字存AX

  109. JMP NN


  110. EXIT:
  111. RET

  112. main endp

  113. ;========================
  114. DISP PROC NEAR ;每次显示2个字节共16位
  115. PUSH CX
  116. MOV CX,16
  117. N2:
  118. ROL AX,1
  119. JC DISP1
  120. MOV DL,' '
  121. JMP DISP_K
  122. DISP1:
  123. MOV DL,DISP_C
  124. DISP_K:
  125. MOV ES:[SI],DL
  126. MOV DL,DISP_A
  127. INC SI
  128. MOV ES:[SI],DL
  129. INC SI
  130. LOOP N2
  131. POP CX
  132. RET

  133. ;========================

  134.         
  135. code ends
  136. end start
复制代码
帮你找了下参考代码。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-15 16:56:11 From FishC Mobile | 显示全部楼层
小甲鱼 发表于 2012-7-15 16:50
帮你找了下参考代码。

^ω^谢谢甲鱼哥~我研究研究。。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-15 17:10:16 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-15 18:51:08 From FishC Mobile | 显示全部楼层
小甲鱼 发表于 2012-7-15 17:10
加油哈,我也是帮忙找找资料~

嗯嗯,我正在预谋一个16位汇编的。。七夕程序。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-15 20:29:19 | 显示全部楼层
敉沧 发表于 2012-7-15 18:51
嗯嗯,我正在预谋一个16位汇编的。。七夕程序。。

加油~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-23 18:21:26 | 显示全部楼层
学习  学习
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-9-8 21:34:28 | 显示全部楼层
甲鱼哥真是热心肠!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 09:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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