博文

汇编程序设计(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       mov bl,1       mov ......

阅读全文(2601) | 评论:0

汇编子程序设计(2006-11-16 21:39:00)

摘要:要求: 已知某密码由英文字母A、B、C……Z组成且以ASCII码形式存放在以CIPHER为首地址的存储区中,试统计各字母在此密码中出现的次数并依次存入以CHAR为首地址的26个字节中,最后将字母出现的次数以十六进制形式显示出来(设出现的次数≤255),显示格式为: A XXH B XXH Z XXH 要求: 将“8位二进制数转换成十六进制数并显示出来”的功能用子程序完成。 program:  jidseg     segmentchipher  db 'AASDFGHJKLMNBVCXZQWERTYUIOPJSDLFSDLFSDJFOFWOOEWJWTRETJGFVNLFLFJLWUIEWWFSFSFKF'len      = $-chipherchar      db  26 dup(0)dseg      endscseg     segment         assume   cs:cseg ,ds:dsegstart:          mov ax,dseg   mov ds,ax          mov si,0next:   mov  bl,chipher[si]          mov  bh,0   inc si   cmp si,len   ja  count   sub bl,'A'   add char[bx],1 ......

阅读全文(2397) | 评论:2

汇编子程序设计(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    segmentdata  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,hdatadseg     ends   cseg    segment assume cs:cseg,ds:dseg  start: mov ax,dseg mov d......

阅读全文(2827) | 评论:1

杨辉三角(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<<" "<<data[x];  cout<<endl; } return true;}  ......

阅读全文(2297) | 评论:0

合并链表(数据结构)(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) {  L1.combination_descending(&L2);  L1.get_data_out();  cout<<......

阅读全文(2319) | 评论:0

上课的遐想(2006-11-13 13:07:00)

摘要:今天早上上课,第一节课听的还蛮认真的,到了第二节课,饿的我真是难受啊,我啊可没什么精力去听课了,只是在那里装听啊,有点虚伪啊,对不起老师,对不起父母,更对不起自己啊,所以我以后要改正啊!尽管老师讲的不是特别的好,我也要好好的听啊,这样可以学的更多,更容易啊!俗话说:“上课听一分,下课轻松十分啊”!我要好好的努力啊,上课好好的努力啊,将来赶超对我有蔑视的人,要让他们知道我也是很强大!谢谢大家的支持!......

阅读全文(1898) | 评论:0

汇编 分支程序设计(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:CODESEGSTART: MOV AX,DATASEG MOV DS,AX  MOV BX,0 MOV CX,100AGAIN: CMP SCORE[BX],90         JB NEXT                 INC BEST                    ;if >= 90 , Best! JMP DONENEXT: CMP SCORE[BX],80            ;If got here, ......

阅读全文(3164) | 评论:0

汇编循环程序设计(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:CODESEGSTART: 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,100AGAIN: CMP SCORE[BX],AL JE FOUND INC BX LOOP AGAIN  MOV DL,'N'  ;Not found, print 'N' JMP DONEFOUND: MOV DL,'Y'  ;Wow, Found it! print 'Y'DONE: INT 21H   MOV AH,4CH INT 21HCODESEG ......

阅读全文(4358) | 评论:1

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);   min2=edge[min].v2;  Wait();  if(pp[min1].weight!=pp[min2].weight)  {    &nb......

阅读全文(1953) | 评论:0

设计程序以实现构造哈夫曼树的哈夫曼算法(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<<endl<<endl<<endl;    cout<<"          ***********************......

阅读全文(5794) | 评论:8