博文
汇编程序设计(2006-11-23 17:27:00)
摘要:从键盘输入一个八位二进制数,显示其对应的无符号与带符号十进制
程序:
datasegment segment
array db 8 dup(0)
ssign db 'sign data','$'
uunsign db 'unsign data','$'
datasegment ends
codesegment segment
assume ds:datasegment,cs:codesegment
start:
mov ax,datasegment
mov ds,ax
mov si,0
mov cx,8
rep: mov ah,1
int 21h
sub al,30h
mov array[si],al
inc si
loop rep
mov di,7
&n......
汇编子程序设计(2006-11-16 21:39:00)
摘要:要求:
已知某密码由英文字母A、B、C……Z组成且以ASCII码形式存放在以CIPHER为首地址的存储区中,试统计各字母在此密码中出现的次数并依次存入以CHAR为首地址的26个字节中,最后将字母出现的次数以十六进制形式显示出来(设出现的次数≤255),显示格式为:
A XXH
B XXH
Z XXH
要求:
将“8位二进制数转换成十六进制数并显示出来”的功能用子程序完成。
program:
jidseg segment
chipher db 'AASDFGHJKLMNBVCXZQWERTYUIOPJSDLFSDLFSDJFOFWOOEWJWTRETJGFVNLFLFJLWUIEWWFSFSFKF'
len = $-chipher
char db 26 dup(0)
dseg ends
cseg segment
assume cs:cseg ,ds:dseg
start:
mov ax,dseg
mov ds,ax
mov si,0
next: mov bl,chipher[si]
mov bh,0
inc si
cmp si,len
ja c......
汇编子程序设计(2006-11-14 22:58:00)
摘要:
实验七 子程序设计(1)
(一)实验目的
1、掌握子程序的设计方法和调用方式
2、深刻认识堆栈在子程序设计中所起的作用
3、掌握子程序调试的技巧。
(二)实验设备
同实验二
(三)实验内容和要求
实验内容:
内存中有一字节型无符号数缓冲区Data,长度为100。将Data缓冲区显示到屏幕上,分别用二进制,十进制和十六进制。要求:
1.编写子程序将一个字节数用二进制进行显示,参数用内存数传递;
2.编写子程序将一个字节数用十进制进行显示,参数用寄存器数传递;
3.编写子程序将一个字节数用十六进制进行显示,参数用堆栈传递;
(四)预习要求
同实验二
(五)实验步骤
同实验二
(六)实验结果分析
1、理解3种参数传递方式各有什么特点
2、绘制一般子程序的结构。
(七)编程提示
(a) 二进制显示可采用移位并判断该位的方式进行。
(b) 十进制数采用除以10取商的方式。
(c) 十六进制数可利用二进制转换位十六进制的方法进行。
(d) 注意去掉最高位的“0”。
目前只做了1和2
DSEG segment
data db 101,1,2,3,4,5,6,7,8,9,90 dup(5)
msg db ',','$'
msg1 db 'please choose operation','$'
msg2 db '0:bit-data; 1:dec-data; 2:hex-data','$'
addrtbl dw bdata,ddata,hdata
dseg ends
c......
杨辉三角(2006-11-13 13:19:00)
摘要:#include<iostream>
#include<iomanip>
using namespace std;
class queue
{
public:
queue(){rear=front=0;}
bool empty(){return rear==front;}
bool get_yanghuisanjiao(int i);
private:
int front;
int rear;
int data[20];
};
int main()
{
queue q;
int y;
cout<<"please put in how many line in yanghuisanjiao"<<endl;
cin>>y;
q.get_yanghuisanjiao(y);
return 0;
}
bool queue::get_yanghuisanjiao(int i)
{
data[0]=1;data[1]=1;//先将第一,第二位置的元素输入;
int h=i;
for(int j=1;j<=i;j++)
{
for(int n=rear;n>=1;n--)
{
data[n]=data[n]+data[n-1];//实现元素的算法;
}
data[rear++]=1;
cout<<setw(h--);
for(int x=0;x<rear;x++)//输出元素;
cout<<" "<<da......
合并链表(数据结构)(2006-11-13 13:18:00)
摘要:#include"link_list.h"
int main()
{
int i;
link_list L1;
link_list L2;
cout<<"now put in the data in the first list L1"<<endl;
L1.get_data_in();
cout<<"now put in the data in the second list L2"<<endl;
L2.get_data_in();
cout<<"if you want to printf the combination_increase list please put '1'" <<endl;
cout<<"if you want to printf the combination_descending list please put '0'" <<endl;
cin>>i;
if(i==1)
{
L1.combination_increase(&L2);
L1.get_data_out();
cout<<"if you want to printf the combination_descending list please put '0'" <<endl;
int j;cin>>j;
if(j==0)
{
L1.combination_descending(&L2);
L1.get_data_out();
}
}
if(i==0)
&nbs......
上课的遐想(2006-11-13 13:07:00)
摘要:今天早上上课,第一节课听的还蛮认真的,到了第二节课,饿的我真是难受啊,我啊可没什么精力去听课了,只是在那里装听啊,有点虚伪啊,对不起老师,对不起父母,更对不起自己啊,所以我以后要改正啊!尽管老师讲的不是特别的好,我也要好好的听啊,这样可以学的更多,更容易啊!俗话说:“上课听一分,下课轻松十分啊”!我要好好的努力啊,上课好好的努力啊,将来赶超对我有蔑视的人,要让他们知道我也是很强大!谢谢大家的支持!......
汇编 分支程序设计(2006-11-13 10:00:00)
摘要:实验内容:
在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。假设学生成绩在[90,100]区间为优秀,在[80,90)区间为良好,在[70,80)区间为一般,在[60,70)区间为及格,在[0,60)区间为不及格,要求统计出不及格,及格,一般,良好和优秀的人数,分别送入Notpassed,Passed,Good,Better和Best字节单元。
1. 用普通的跳转语句实现上述功能。
2. 用地址表法和转移表实现。
*******************************************
DATASEG SEGMENT
NOTPASSED DB 0
PASSED DB 0
GOOD DB 0
BETTER DB 0
BEST DB 0
SCORE DB 90,80,75,30,64,95 DUP(70)
DATASEG ENDS
CODESEG SEGMENT
ASSUME DS:DATASEG,CS:CODESEG
START:
MOV AX,DATASEG
MOV DS,AX
MOV BX,0
MOV CX,100
AGAIN: CMP SCORE[BX],90
JB NEXT
INC BEST ;if >= 90 , Best!
JMP DONE
NEXT: CMP SCORE[BX],80 &......
汇编循环程序设计(2006-11-13 09:58:00)
摘要:实验内容:
在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。设计程序完成如下功能:
①根据用户输入的一个2位十进制数,作为查找对象,在该数组中查找,若找到则显示“Y”,若没找到则显示“N”。
②根据用户输入的一个2位十六进制数,作为查找对象,在该数组中查找,若找到则显示“Y”,若没找到则显示“N”。
************************************************************************
(1)
DATASEG SEGMENT
SCORE DB 90,80,75,30,64,95 DUP(70) ;数据段
DATASEG ENDS
CODESEG SEGMENT
ASSUME DS:DATASEG,CS:CODESEG
START:
MOV AX,DATASEG
MOV DS,AX
MOV AH,1 ;读入第一个数字a
INT 21H
SUB AL,30H
MOV CL,10
MUL CL
MOV BL,AL
MOV AH,1 ;读入第二个数字b
INT 21H
SUB AL,30H
ADD AL,BL ;得到a*10+b
MOV AH,2 ;Ready to print char
MOV BX,0
MOV CX,100
AGAIN: CMP SCORE[BX],AL
JE FOUND
INC BX
LOOP AGAIN
MOV DL,'N' ;Not found, print 'N'
JMP DONE
FOUND: MOV D......
kruskal 算法实现(2006-11-13 09:53:00)
摘要://kruskal 算法实现;
#include"graph2.h"
datagraph g2,g1;
struct node{//定义结构体;
int weight;
};
struct enode{
int v1,v2;
int weight;
int key;
};
enode edge[100];
node pp[100];
int keys[100];
int n;
int nweight;
int ecount1=0,ncount,ecount=0,ecount3=0;//初始化;
void change_weight(int weight1,int weight2)//改变节点的权值;
{
for(int k=1;k<=n-ncount;k++)
if(pp[keys[k]].weight==weight1||pp[keys[k]].weight==weight2)
pp[keys[k]].weight=n;
}
void get_tree()//生成树函数;
{
int min,min1,min2;
while(ecount!=ncount-1)
{
int m=1000;
for(int i=1;i<=ecount1;i++)
if(edge[i].weight<m&&edge[i].key==0)//选择权值最小的边;
{m=edge[i].weight;min=i;}
visite_gnode(g2,edge[min].v1,1); min1=edge[min].v1;
visite_gnode(g2,edge[min].v2,1); ......
设计程序以实现构造哈夫曼树的哈夫曼算法(2006-11-13 09:52:00)
摘要://数据结构课程设计、
//设计程序以实现构造哈夫曼树的哈夫曼算法。
//要求:使用实验工具的有关功能;要能有演示过程;求解出所构造的哈夫曼
//树的带权路径长度。
#include"btreint.h"
int count=0;
//数据的个数;
bitre data[50];//存储数组
void delete_min()//获得最小元素、
{
for(int i=1;i<=count-2;i++)
data[i]=data[i+2];
}
int tree_insert(bitre t)//插入新的节点;
{ if(t->data>=data[count]->data){data[++count]=t;return 0;}
else{int m;
for(int j=1;j<=count;j++)
if(data[j]->data>=t->data){m=j;break;}
for(int k=count;k>=m;k--)
data[k+1]=data[k];
data[m]=t;
count++;}
}
int num=0;
get_long(bitre t)//求解huffman树的带权路径长度;
{
if(t!=NULL)
{
if(t->rchild!=NULL&&t->lchild!=NULL)
{
visite_bnode(t,1);
num=num+t->data;
get_long(t->lchild);
get_long(t->rchild);
}
}
}
void main()
{
cout<<endl<<end......