C语言问题: 给出字符点阵,显示字符,请问应如何写程序代码?

C语言问题: 给出字符点阵,显示字符,请问应如何写程序代码?,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

这是给出的相关的材料,请教达人指点啊

我不知道如何动手,也不清楚代码要怎么写

希望高手给编写出来吧.谢谢了

/* Chars are defined as 5 columns with each 8 bit, (5x8 font)

lowest 4 dots up to down 1,2,4,8 is higher nibble,

upper 4 dots up to down is lower nibble, for example:

| 123456

-+----------

|

1| xxx 1

2| x x 2

3| x x 4

4| x x __8 "A" is {0x7E,0x11,0x11,0x11,0x7E,0x00} (Last column blank)

5| xxxxx 1

6| x x 2

7| x x 4

8| 8

*/

const byte prime_char_map[][6] = { {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* Block for test at startup */ {0xFF,0xFF,0xFF,0xFF,0xFF,0x00}, \

/* 02 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 03 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 04 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 05 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 06 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 07 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 08 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 09 */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 0A */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 0B */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 0C */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 0D */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 0E */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 0F */ {0x00,0x00,0x00,0x00,0x00,0x00}, \

/* 10 */ {0x00,0x7F,0x3E,0x1C,0x08,0x00}, \

/* 11 */ {0x08,0x1C,0x3E,0x7F,0x00,0x00}, \

/* 12 */ {0x44,0x66,0x77,0x66,0x44,0x00}, \

/* 13 */ {0x11,0x33,0x77,0x33,0x11,0x00}, \

/* 14 */ {0x48,0x77,0x49,0x41,0x42,0x00}, \

/* 15 */ {0x30,0x48,0x45,0x40,0x20,0x00}, \

/* 16 */ {0x00,0x00,0x7D,0x00,0x00,0x00}, \

/* 17 */ {0x40,0xE0,0xE0,0x7F,0x06,0x00}, \

/* 18 */ {0x24,0x42,0x81,0x42,0x24,0x00}, \

/* 19 */ {0x0F,0xF0,0x00,0xF0,0x0F,0x00}, \

/* 1A */ {0x20,0x40,0x20,0x10,0x08,0x00}, \

/* 1B */ {0x7C,0x82,0x82,0x83,0x44,0x00}, \

/* 1C */

解析:

你的材料不全吧,看样子应该是prime_char_map[][6]第一维应该有256个元素的,你给出来的只是前面的一小部分,这里面很多都不是可显示的字符。下面是根据你的材料写的显示字符的程序:#include <stdio.h>const byte prime_char_map[][6] = {{0x00,0x00,0x00,0x00,0x00,0x00}}这个地方你得把你的材料里的prime_char_map定义全都粘进来void Display(char c)void main(){Display('A')Display('b')}void Display(char c){int i, jbyte bit = 0x01for (i = 0i <8i++){for (j = 0j <6j++){if (prime_char_map[c][j] &bit)printf("x")elseprintf(" ")}printf("\n")bit *= 2}}

DATA

SEGMENT

str

db

'Hello!'

len

equ

$-str

len为str所指字符串长度

DATA

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,

DS:DATA

START:

MOV

AX,

DATA

MOV

DS,

AX

MOV

CX,

len

CX保存循环次数

LEA

SI,

str

字符串首地址送SI

DISPLAY:

MOV

DL,

[SI]

依次取str所指字符串中单个字符送DL

CALL

DISP

调用显示字符子程序

INC

SI

字符串偏移地址加1

LOOP

DISPLAY

MOV

AH,

4CH

INT

21H

显示字符子程序,入口参数在DL

DISP

PROC

PUSH

AX

MOV

AH,02H

INT

21H

POP

AX

RET

DISP

ENDP

CODE

ENDS

END

START

不知道你采用什么语言。

假定使用c语言,ascii的控制字符有一些可以采用转义字符处理:

回车键

\n

tab键

\t

等,其 *** 作方式等同字符 *** 作;

在c语言中,所有字符都可以用

int

表示

,该数值为字符的ascii码,这样我们处理控制字符的时候,就可以处理了。

如铃声bell,ascii码为7;则我们输出可采用以下代码:

int

cc=7

printf("%c",cc)

其他 *** 作大同小异。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8144775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存