标题:[求助][讨论]小A组成大A
只看楼主
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
哈哈,我就知道会有人这样做的

2007-06-01 18:31
sk941
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-14
得分:0 
我们老师出过这样的题目,要求画个心型图,我直接COPY然后改过来

2007-06-01 18:44
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
得分:0 
呵呵 ls的是最简单的
不过最好还是用循环来做

   好好活着,因为我们会死很久!!!
2007-06-01 18:52
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
得分:0 
可以用C来写,写好后反汇编来看一下呀。

人生重要的不是所站的位置,而是所朝的方向
2007-06-03 01:09
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
得分:0 

转载的:(任意输入一个字符,然后输出一个大字符)

total_len equ 8*128 ;01
;****************************************8
message segment ;03資料段開始
message0 db 0dh, 0ah,'按任意鍵(Esc鍵離開):$'
char_graph db total_len dup(?)
message ends ;06 資料段結束
;*********************************************
code segment ;08 程式碼區段開始
assume cs:code, ds:message
;___________________________________________
main proc far ;11 指程式開始
start: push ds ;12 將返回DOS資訊存入堆疊
sub ax,ax
push ax

mov bx,0f000h ;16
mov cx,total_len
mov ds, bx ;18 使DS指向BIOS段位址
mov si,0fa6eh ;19 使SI指向BIOS中ASCII位元圖之偏移位址
mov ax, message
mov di, offset char_graph
mov es,ax ;22 使ES指向本程式的資料段
rep movsb ;23 搬移

mov ds, ax ;25 使DS指向本程式的資料段
nxt_char:
mov dx, offset message0
mov ah, 9
int 21h ;29
call crlf
input: mov ah, 0 ;31 輸入按鍵
int 16h
cmp al,1bh
je exit
cmp al, 07fh
ja input ;36

mov dh, al ;38 保存該鍵的ASCII於DH
mov si, offset char_graph
cbw ;40 計算該ASCII之偏移位址
mov cl, 3
shl ax, cl
add si, ax ;43 並存於SI
cld ;44 使LODSB往高位址處取得資料
mov ch, 8 ;45 每個ASCII字元圖以8位元組表示
nxt_byte:
lodsb ;47 取得該ASCII字元的其中一個位元組
mov cl, 8 ;48 每個位元組有8位元
nxt_bit:
mov dl, dh ;50 決定是要印出空白還是該字元
shl al, 1 ;51 決定方法是該位元為0則印空白
jc print ;52 反之印出該ASCII字元
mov dl,' ' ;53
print: mov ah,2 ;54
push ax ;55 為避免AL值改變,故存於堆疊
int 21h ;56 印出
pop ax ;57 取回AL值
dec cl
jnz nxt_bit ;59 是否印下一位元

call crlf ;61 否,則印出換行及歸位字元
dec ch
jnz nxt_byte ;63 是否印下一位元組
jmp nxt_char ;64 否,則跳到輸入按鍵
exit: ret ;66 返回DOS
main endp
;_____________________________________________
crlf proc near ;69
push ax
mov ah, 2
mov dl, 0dh
int 21h
mov dl, 0ah
int 21h
pop ax
ret
crlf endp ;78
;_________________________________________________
code ends ;80
;*************************************************
stack segment stack ;82 堆疊段
dw 80 dup (?)
stack ends ;84
;*************************************************
end start ;86 指定程式進入點


人生重要的不是所站的位置,而是所朝的方向
2007-06-03 01:12
白居易
Rank: 1
来 自:北京
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-5-28
得分:0 

这是我编的小A变大A的C++程序,但搞不懂herbert_1987说的反汇编,还得请教大家
#define han 9
#define lie 2*han
#include<iostream>
#include<string>
using namespace std;
main()
{
int i,j,m,n,k;
i=han/2;j=lie/2;
string data[han][lie];
for(m=0;m<han;m++)
for(n=0;n<lie;n++)
{
k=m;
if(n==j-k||n==j+k||m==i&&n>j-i&&n<j+i)
{data[m][n]='A';
cout<<data[m][n];
}
else
{
data[m][n]=' ';
cout<<data[m][n];
}
if(n==lie-1)
cout<<endl;
}
}

[此贴子已经被作者于2007-6-3 17:30:42编辑过]


革命尚未成功,同志仍需努力
2007-06-03 17:28
g19871001
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-6-3
得分:0 
个人感觉不会很难吧?  楼主不会是想拿结果的吧?  是不是就是显示字母跟排列问题? 方法应该不少. 楼上写的是什么...感觉有点乱..对么?
2007-06-03 23:44
白居易
Rank: 1
来 自:北京
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-5-28
得分:0 
这个论坛不错,有催人上进的氛围,我是加定了,楼上觉得哪里可以精简一点

革命尚未成功,同志仍需努力
2007-06-04 22:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-143213-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.236646 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved