- 博客(43)
- 收藏
- 关注
原创 实验16
assume cs:code code segmentstart: mov ax , 0 mov es , ax mov word ptr es:[7ch*4] , offset setscreen //不复制程序,只是将中断向量表中7ch号中断的地址改为我的处理程序的地址,即setscre
2014-01-29 10:54:30
473
原创 实验15
安装一个新的int9 中断例程,功能:在DOS下,按下A键后,除非不松开,如果松开,就显示满屏幕的"A"(1)自行编写的int9中断例程: assume cs:codestack segment //自定义栈段,其实也可以不需要 db 128 dup (0)stack endscode se
2014-01-29 00:01:47
575
原创 实验14
编程,以“年/月/日 时:分:秒”的格式,显示从cmos ram中读取的时间:assume cs:code , ds:datadata segment db 32 dup(0) //开辟32个字节的空间来存放最终要显示的字符串,实际用到了17字节。初始化为0data endscode segment start:
2014-01-28 17:10:42
442
原创 实验13.3
assume cs:codecode segments1: db 'Good , better , best ,', '$' s2: db 'Never let it rest ,', '$' s3: db 'Till good is better ,' , '$' s4: db 'And better , best.', '$'s: dw offset s1 ,
2014-01-28 15:24:55
464
原创 实验13.2
(2)编写,编译,并运行myloop.exeassume cs:codecode segment start: mov ax , cs mov ds , ax mov si , offset myloop mov ax , 0 mov es , ax mov di , 200h
2014-01-28 14:37:54
427
原创 实验13.1
(1) 编写,并安装myshow程序assume cs:codecode segment start: mov ax , cs mov ds , ax mov si , offset myshow mov ax , 0 mov es , ax mov di , 200h
2014-01-28 14:18:52
416
原创 检测点13.1
(1) 安装自己编写的7ch中断程序(myjumpn.asm),即将功能处理程序拷贝到内存 0:200h处,并将中断向量表的7ch项做相应的设置(段地址,偏移地址) assume cs:codecode segment start: mov ax , cs mov ds , ax mov si ,
2014-01-28 11:54:11
627
原创 实验12
assume cs:codecode segmentstart: mov ax , cs mov ds , ax mov si , offset do0 mov ax , 0 mov es , ax mov di , 200h mov cx , offset do0end-off
2014-01-27 12:59:36
434
原创 实验11
assume cs:codesgdatasg segment db "Beginner's All-purpose Symbolic Instruction Code.",0datasg endscodesg segment begin: mov ax , datasg mo
2014-01-27 00:19:03
539
原创 第10章课程设计1
assume cs:codesgdata segment db '1975','1976','1977','1978','1979' db '1980','1981','1982','1983','1984' db '1985','1986','1987','1988','1989' db '1990','1991','1992'
2014-01-25 23:51:22
450
1
原创 第十章实验10.3
本实验要将十进制数字,以ASCII码的形式显示到屏幕上assume cs:codedata segment db 10 dup (0) //存放要写到屏幕上的数字的内存段data endscode segment start: mov ax
2014-01-25 15:17:42
480
原创 第十章实验10.2
本实验要实现32位除法结果不溢出(被除数32位,除数16位)assume cs:codecode segmentstart : mov ax , 4240H //参数1:被除数的低16位,放入ax mov dx , 000FH
2014-01-25 11:28:41
449
原创 第十章实验10.1
assume cs:codedata segment db 'Welcome to masm!',0 //要显示的字符串,以0结尾,属于"C风格字符串“,这样就不用保存字符串的长度data endscode segmentstart: mov dh, 8
2014-01-25 10:16:34
523
原创 检测点10.1-10.5
10.1 mov ax , 0 mov ax, 1000h10.2 ax = 610.3 ax = 1010H10.4 ax = BH10.5 (1) ax = 310.5 (2) ax = 1 , bx = 0
2014-01-18 22:43:17
637
原创 第九章实验9
assume cs:codesg,es:datasg,ss:stacksgdatasg segment db 'welcome to masm!' //要显示的字符串,共16个byte db 11000010B //第一种字体属性,红底闪烁绿字 db 00
2014-01-18 15:29:17
455
原创 第9章实验8
assume cs:codesgcodesg segment mov ax,4c00h // ip=0 int 21h start: mov ax , 0 // ip=5 s: nop
2014-01-18 14:17:24
444
原创 检测点9.3
assume cs:codecode segment start: mov ax , 2000h mov ds , ax mov bx , 0 s: mov cl , [bx] mov ch , 0 inc cx //此处要将cx加1是因为loop指令会先将c
2014-01-18 11:23:42
788
原创 检测点9.2
assume cs:codecode segment start: mov ax , 2000h mov ds , ax mov bx , 0 s: mov cl , [bx] //用【bx】处内存的值直接赋值给cx寄存器,注意不能将cl写成cx,因为
2014-01-18 11:11:24
613
原创 检测点9.1
(1) assume cs:codedata segment dw 0,0data endscode segment start : mov ax , data mov ds , ax mov bx , 0 jmp word p
2014-01-18 10:52:00
618
原创 第八章实验7
assume cs:codesg,ss:stacksgdata segment db '1975','1976','1977','1978','1979' db '1980','1981','1982','1983','1984' db '1985','1986','1987','1988','1989' db '1990','1
2014-01-17 23:56:45
434
原创 第七章问题7.9
assume cs:codesg,ss:stacksg,ds:datasgstacksg segment dw 0, 0, 0, 0, 0, 0, 0, 0stacksg endsdatasg segment db '1. display ' db '2. brows ' db '3
2014-01-15 21:57:48
466
原创 第六章实验五
(5)assume cs:codea segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endsc segment db 0,0,0,0,0,0,0,0c endscode segmentstart :
2014-01-15 00:43:35
370
原创 第5章实验4
(1)向内存0:200 -- 0:23F 依次传送数据0--63(3FH)assume cs:codecode segment mov ax , 0020H mov ds , ax mov bx , 0 mov cx , 40H s: mov [bx] , bx inc bx
2014-01-14 00:13:42
359
原创 检测点3.2
(1) 将内存空间2000:0000-2000:000F看作栈,初始时候栈空,初始栈指针指向内存单元2000:0010,通过push指令将数据压入栈中 mov ax, 1000H mov ds, ax mov ax , 2000H mov ss, ax mov sp, 10H pus
2014-01-09 23:16:14
467
原创 检测点3.1
(1)在Debug中,用"d 0:0 1f“ 查看内存,结果如下:0000:0000 70 80 F0 30 EF 60 30 E2- 00 80 80 12 66 20 22 600000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88下面的程序执行前, AX
2014-01-09 23:02:55
606
原创 检测点2.3
下面的3条指令执行后,CPU几次修改IP? 都是什么时候?最后IP中的值是多少? mov ax , bx (根据CS:IP 读取指令,IP+, 执行指令 mov) sub ax , ax (根据CS:IP 读取指令,IP+, 执行指令 sub,执行后ax寄存器中的值为0) jmp ax
2014-01-05 16:42:34
460
原创 检测点2.2
(1) 给定段地址为 0001H , 仅通过变化偏移地址寻址,CPU的寻址范围为 00010H ----- 1000FH(2) 有一数据存放在内存 20000H 单元中,现给定段地址为 SA , 若想用偏移地址寻到此单位,则 SA 满足的条件是: 最小为:1001H , 最大为:2000H
2014-01-05 15:08:49
434
原创 检测点2.1
(1) 写出每条汇编指令执行后相关寄存器中的值 mov ax , 62627 AX = F4A3H mov ah , 31H AX = 31A3H mov al , 23H AX = 3123H add
2014-01-05 14:38:24
386
原创 检测点1.1
(1) 1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13(2) 1KB的存储器有 1024 个存储单元 。 存储单元的编号从 0 到 1023(3) 1KB的存储器可以存储 1024×8 个bit, 1024 个Byte(4) 1GB , 1MB, 1KB 分别是 1024x1024x1024 Byte, 1024x1024 Byte, 1024Byte(5) 8080
2014-01-05 13:52:03
455
原创 汇编语言学习(开篇)
本人今天开始学习王爽老师著的《汇编语言》,为督促自己踏实学习,将每节课后检测点的练习都发到博客上来,一节不漏。本人汇编0基础,一切从头开始。
2014-01-05 13:39:16
377
原创 数据结构之图(下)
图的实现public class Graph { private List nodes; //所有节点的集合 private Map> sides; //图的构成数据,每一个节点包含一个list,list里面是所有和该节点相邻的side public Graph(){ nodes=new ArrayList(); sides
2013-09-30 02:34:55
460
原创 数据结构之图(上)
图的用处也很广。搜索引擎的爬虫机器人在网上下载网页肯定用到了图这种数据结构,包括图的深度优先/广度优先算法,以及图中两个节点间的最短距离及最短路径(路线)。本实现简单实现了图的这三个算法。我这里用来表示图的数据结构包括节点和边(有向图,边含有权重)。节点的实现如下:public class Node { private String name;
2013-09-30 02:26:21
502
原创 数据结构之栈(用list实现)
栈(stack)这种数据结构用得相当那个广泛。用list实现相当方便。特点就是FILO(先进,后出)public class MyStack { private MyLinkedList lists; public MyStack(){ lists=new MyLinkedList(); } //将新元素压入栈中,位居栈顶 public void push(i
2013-09-30 02:09:31
653
原创 数据结构之list(用链表实现)
相当于LinkedList链表由节点构成。由于只实现单向链表,所里节点里面只有next指针,没有previous指针。public class MyNode { private int data; private MyNode next; public int getData() { return data; } public void setDa
2013-09-30 02:05:26
752
原创 数据结构之list(用数组实现)
由数组实现的list,相当于ArrayList,简单起见,未实现为泛型。public class MyArrayList { private int[] array; private int capacity; //容量 private int size; //实际填充的数值个数 private static final int DEFAULT_CAPACI
2013-09-30 02:00:42
906
原创 数据结构之优先队列
优先队列就是在队列的基础上增加优先级的比较。在操作系统进行进程/线程调度算法中即用到了优先队列。比如去医院看病,大家都要排队,但是如果病情非常严重的人肯定不需要排队了,可以直接救治,因为其优先级更高。优先队列用堆来实现非常方便。因为将元素添加到堆中以后,堆的头节点总是值最大的那个(按Comparable的compareTo方法进行比较),如果在实现类的comparaTo
2013-09-30 01:50:37
546
原创 排序算法值堆排序
堆排序的原理:用数组元素构建堆。每次调用堆的insert函数时,堆都会将堆中最大的元素调整到堆的头节点处。添加完毕,然后调用delete函数,每次删除和返回的都是当前堆中的最大数值。 public static void heapSort(int[] lists){ Heap heap=new Heap(); for(int i=0;i<lists.l
2013-09-30 01:40:51
473
原创 数据结构之堆
堆实际也是一种二叉数。特点是父节点的数值总是大于等于子节点的数值。堆可以用来实现堆排序,也可以用来实现优先队列。//堆实现为泛型类,实现类型必须实现Comparable接口public class Heap { private List data; //数据放在list里面 public Heap(){ data=new ArrayList(); } p
2013-09-30 01:35:11
420
原创 数据结构之二叉查找树
二叉查找树由节点构成,每个结构包含数值元素,左子树(指向左边相连的节点的指针),右子树(指向右边相连的节点的指针),父节点(指向父节点的指针)public class BinaryNode { private int data; private BinaryNode left=null; private BinaryNode right=null; private Bin
2013-09-30 01:24:48
578
原创 排序算法之二叉查找树排序
//二叉查找树排序,原理:构造二叉查找树,用数组数据进行填充,然后每次删除二叉查找树之最小元素,返回的即是树中剩余元素中的最小值。 //该算法的局限是不能有重复元素的存在 //关于BinaryTree的构建,请参考本系列数据结构之二叉查找树 public void BinaryTreeSort(int[] lists) { BinaryTree tree=new BinaryT
2013-09-30 01:00:47
649
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人