自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (2)
  • 收藏
  • 关注

原创 sort包

Golang官方包中包含一个sort,提供了几种排序算法。比如sort.Ints、sort.Float64、sort.Strings,分别是对整数,浮点数,字符串的排序。对字符串的排序其实就是对字符串的第一个byte的ASCII码进行排序。package mainimport ( "sort" "fmt")func main() { //数字排序 ages := []int{2,1,5,66,55,23,78,98,13} sort.Ints(ages) fmt.Println(a

2020-08-27 10:57:26 236

原创 Go语言初始化动态数组的注意事项

当我们已知数组的长度时,我们可以通过下面几种方法去初始化一个数组:var array [5]int这种方式,只是初始化,不带初始化值,数组长度,已经定义好, 但是其实初始化的值也已经有了并且是该类型的最小值。var array = [5]int{1, 2, 3, 4, 5}这种方式,既初始化变量,又带了初始化值,数组长度也已经定义好。var array = [...]int{1, 2, 3, 4, 5}这种方式,既初始化变量,也是带了初始值,数组长度,根据初始值的个数而定,也就是五个。

2020-08-23 13:34:26 1043

原创 Golang 动态的创建二维数组

关于用Go语言怎样动态的创建二维数组。package mainimport "fmt"func main() { n := 3 f := make([][]int, n) // [[] [] []] fmt.Println(f) for i := 0; i < n; i++ { f[i] = make([]int, n) } fmt.Println(f) // [[0 0 0] [0 0 0] [0 0 0]]}在第一个make那里填入两个n也不会有影响。pac

2020-08-23 13:23:03 2252

原创 《汇编语言》实验16

安装一个新int 7ch中断例程,为显示输出提供如下功能子程序:(1) 清屏(2) 设置前景色(3) 设置背景色(4) 向上滚动一行入口参数说明如下:(1) ah寄存器传递功能号:0清屏,1设置前景色,2设置背景色,3向上滚动一行(2) 对于2、3功能,用al传送颜色值,(al)∈{0, 1, 2, 4, 5, 6, 7}assume cs:code, ss:stackstack segment db 128 dup(0)stack endscode segmenti

2020-07-19 21:08:34 288

原创 《汇编语言》实验15

安装一个新的int 9 中断例程, 功能:在DOS下,按“A”键后,除非不在松开如果松开,就显示满屏幕的“A”,其他的键照常处理。提示, 按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。断码=通码 + 80h。assume cs:code, ss:stackstack segment db 128 dup (0)stack endscode segmentstart: mov ax, sta

2020-07-19 21:08:22 255

原创 《汇编语言》实验14

编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。assume cs:code,ds:datadata segment db '00/00/00 00:00:00','$' db 9,8,7,4,2,0data endscode segment start: mov ax,data mov ds,ax mov si,0 mov cx,6 mov bx,18 s1: push cx mo

2020-07-19 21:08:12 254

原创 《汇编语言》实验13

(1)编写并安装int 7ch 中断例程,功能为显示一个用0结束的字符串,中断例程安装在0:200处。assume cs:code, ds:datadata segment db 'hello world', 0data endscode segmentstart: mov ax, cs mov ds, ax mov si, offset print ; ds:si指向源地址 mov ax, 0 mov

2020-07-19 21:08:00 523

原创 《汇编语言》实验12

题目编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串"divide error!",然后返回到DOS。分析程序框架:assume cs:codecode segmentstart: do0安装程序 设置中断向量表 mov ax,4c00h int 21hdo0: 显示字符串"divide error!" mov ax,4c00h ;这两条指令用来返回DOS int 21h ;code endsend start具体代码assume c

2020-07-19 21:07:49 211

原创 《汇编语言》实验11

编写一个程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下:名称:letterc功能:将以0结尾的字符串中的小写字母转变成大写字母参数:ds:si指向字符串首地址assume cs:codesgdatasg segment db "Beginner's All-purpose Symbolic Instruction Code.", 0datasg endscodesg segmentbegin:mov ax, datasgmov ds, axmov si

2020-07-19 21:07:39 547

原创 《汇编语言》实验10

1.显示字符串

2020-07-19 21:07:28 211

原创 《汇编语言》实验9

编程:在屏幕中间分别显式绿色、绿底红色、白底蓝色的字符串‘welcome to masm!’思路:首先分别求出绿色、绿地红色、白底蓝色所对应的属性值。分别为02H,24H,71H。将’welcome to masm!'以及上述三个属性值分别写入内存中的数据段。定位屏幕中间的内存地址,由题知,每一页25行,每行80个字符,160个字节。我们需要将三行内容显示在屏幕中央,故我们要从第12行的中央开始显示,12行中央的地址为:B8000+(11×160+64)=B8720H,我们将B872作为目标段地址

2020-07-19 21:07:15 499

原创 《汇编语言》实验8

一个奇怪的程序分析下面的程序,在运行前思考:这个程序可以正确返回吗?运行后再思考:为什么是这种结果?通过这个程序加深对相关内容的理解。assume cs:codesgcodesg segment mov ax,4c00h int 21hstart: mov ax,0s: nop nop mov di,offset s mov si,offset s2 mov ax,cs:[si] mov cs:[di],axs0: jmp short ss1: mov

2020-07-19 21:07:06 2808 2

原创 《汇编语言》实验7

题目:编程,将data段中的数据按如下格式写入table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。提示:可将data段中的数据看成是多个数组,而将table中的数据看成是一个结构型数据的数组,每个结构型数据中包含多个数据项。可用bx定位每个结构型数据,用idata定位数据项,用si定位数组项中的每一个元素,对于table中的数据的访问可采用[bx].idata和[bx].idata[si]的寻址方式。assume cs:codesg,ds:datasg,es:ta

2020-07-19 21:06:56 763

原创 《汇编语言》实验6

(2)编程,完成问题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. replace ' db '4. modify 'datasg endscodesg segmentstart:

2020-07-19 21:06:44 197

原创 《汇编语言》实验5

(5)程序如下,编写code段中的代码,将a段和b段中的数据依次相加,将结果保存到c段中。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: mov ax,a mo

2020-07-19 21:06:33 515

原创 《汇编语言》实验4

(1)编程,向内存0:200~0:23F依次传送数据0~63。assume cs:codecode segment mov ax,20H mov ds,ax mov bx,0 mov cx,64s: mov [bx],bl inc bx loop s mov ax,4c00H int 21Hcode endsend(2)编程,向内存0:200~0:23F依次传送数据0~63。程序中只能使用9条指令,9条指令中包括mo

2020-07-19 21:06:22 227

原创 《汇编语言》检测点17.1

在int 16h中断例程中,一定有设置 IF = 1 的命令。这种说法对吗?答:这种说法是错误的,int 16h会把标志寄存器、段地址、偏移地址入栈,当他们出站时标志寄存器会被还原。所以这里面应该不需要将IF = 1。...

2020-07-19 17:03:05 375 1

原创 《汇编语言》检测点16.2

下面的程序将data段中a处的8个数据累加,结果储存到b处的字中,补全程序。assume cs:code, ds:datadata segment a db 1, 2, 3, 4, 5, 6, 7, 8 b dw 0 data endscode segment start: mov ax, data mov ds, ax

2020-07-19 17:00:38 246

原创 《汇编语言》检测点16.1

下面的程序将code段中 a 处的8个数据累加,结果储存到b处双字中,补全程序。assume cs:codecode segment a dw 1, 2, 3, 4, 5, 6, 7, 8 b dd 0 start: mov si, 0 mov cx, 8s: mov ax, a[si]

2020-07-19 16:59:33 479 2

原创 《汇编语言》检测点15.1

(1)仔细分析一下上面的int 9中断例程,看看是否可以精简一下?其实在我们的int 9中断例程中,模拟int指令调用原int 9中断例程的程序段是可以精简的,因为在进入中断例程后,IF和TF都已经置零,没有必要再进行设置了。对于程序段: pushf pushf pop ax

2020-07-19 16:57:48 412

原创 《汇编语言》检测点14.2

编程,用加法和移位指令计算(ax)=(ax)*10assume cs:codecode segment mov ax,1 ;(ax)=1shl ax,1 ;(ax)=1x2mov dx,ax mov cx,3shl ax,cl ;(ax)=2x2x2add ax,dx ;(ax)=8+2 code endsend

2020-07-19 16:49:44 244 1

原创 《汇编语言》检测点14.1

(1)编程,读取CMOS RAM的2号单元的内容。assume cs:codecode segmentstart: mov al,2 out 70H,al in al,71H mov ax,4c00H int 21Hcode endsend start(2)编程,向CMOS RAM的2号单元写入0。assume cs:codecode segmentstart: mov al,

2020-07-19 16:49:33 409

原创 《汇编语言》检测点13.2

判断下面说法的正误:我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。int 19h 中断程序,可以由DOS提供。第一个说法是错误的,因为FFFF:0处的指令是只读的,无法改变。第二个说法也是错误的,在中断例程的安装过程中有提到——“硬件系统检测和初始化完成之后,调用 int 19h 进行操作系统的向导。启动DOS。”,也就是说,是BIOS提供int 19h 启动了DOS,DOS显然不能够提供int 19h中断例程。...

2020-07-19 16:49:01 566

原创 《汇编语言》检测点13.1

(1)在上面内容中,我们用7ch中断例程实现loop的功能,则上面的7ch中断例程所能进行的最大转移位移是多少?在7ch中断例程中,位移的转移是通过bx中存储的offset来实现的,因此,理论上来说,最大转移位移取决于bx中数据的大小,而bx是一个16位的寄存器,最大值为65535。(2)用7ch中断例程完成jmp near ptr s指令的功能,用bx向中断例程传送转移位移。应用举例:在屏幕的第12行,显示data段中以0结尾的字符串。assume cs:codedata segment db

2020-07-19 16:48:48 666

原创 《汇编语言》检测点12.1

(1)用Debug查看内存,情况如下:0000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00则3号中断源对应的中断处理程序的入口地址为:0070:018B(2)存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:4N。(3)存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:4N+2。...

2020-07-19 16:48:14 790

原创 《汇编语言》检测点11.4

下面程序执行后:ax寄存器中的值为?mov ax,0push axpopf mov ax,0fff0hadd ax,0010h pushfpop axand al,11000101band ah,00001000b逐步分析:前三行代码的功能是将标志寄存器清零mov指令不影响标志寄存器的值add指令对标志寄存器有影响,0fff0h + 0010h = 10000h,肉眼可见,发生了进位,下面对标

2020-07-19 16:47:46 893 3

原创 《汇编语言》检测点11.3

(1)补全下面程序,统计F000:0处32个字节中,大小在[32,128]的数据的个数。mov ax,0f000hmov ds,axmov bx,0mov dx,0mov cx,32s: mov al,[bx] cmp al,32 jb s0 cmp al,128 ja s0 inc dxs0: inc bx loop s (2)补全下面的程序,F000:0处的32个字节中,大小在(32,128)的数据的个数。mov ax,0f000hmov

2020-07-19 16:47:32 886

原创 《汇编语言》检测点11.2

写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。 CF OF SF ZF PF sub al,al 0 0 0 1 1 ;结果为0,ZF为1mov al,10h 0 0 0 1 1 ;传送指令不影响标志寄存器add al,90h 0 0

2020-07-19 16:47:02 658

原创 《汇编语言》检测点11.1

写出下面每条指令执行后,ZF、PF、SF等标志位的值。sub al,al ZF= 1 PF= 1 SF= 0mov al,1 ZF= 1 PF= 1 SF= 0push ax ZF= 1 PF= 1 SF= 0pop bx ZF= 1 PF= 1 SF= 0add al,bl ZF= 0 PF= 0 SF= 0add al,10 ZF= 0 PF= 1 SF= 0

2020-07-19 16:46:50 934

原创 《汇编语言》检测点10.5

(1)下面程序执行之后,ax中的值为多少?assume cs:codestack segment dw 8 dup (0)stack endscode segment start: mov ax,stack mov ss,ax mov sp,16 mov ds,ax mov ax,0 call word ptr ds:[0eh] inc ax inc ax inc ax mov ax,4c00h int 21hcode ends end sta

2020-07-19 16:46:34 1431 1

原创 《汇编语言》检测点10.4

下面的程序执行之后,ax中的数值为多少?内存地址 机器码 汇编指令1000:0 b8 06 00 mov ax,61000:3 ff d0 call ax1000:5 40 inc ax1000:6 mov bp,sp add ax,[bp]指令call 16位寄存器的功能是将该指令后的第一

2020-07-19 16:46:24 1100

原创 《汇编语言》检测点10.3

下面程序执行后,ax中的数值为多少?内存地址 机器码 汇编指令1000:0 b8 00 00 mov ax,01000:3 9A 09 00 00 10 call far ptr s1000:8 40 inc ax1000:9 58 s:pop ax add ax,ax

2020-07-19 16:46:14 1055

原创 《汇编语言》检测点10.2

下面的程序执行之后,ax中的数值为多少?内存地址 机器码 汇编指令1000:0 b8 00 00 mov ax,01000:3 e8 01 00 call s1000:6 40 inc ax1000:7 58 s:pop axCPU执行call指令时,会进行两部操作:将当前的IP或者CS和IP压入栈中;转移到标号处。在此题

2020-07-19 16:45:59 1761

原创 《汇编语言》检测点10.1

补全程序,实现从内存1000:0000处开始执行指令。assume cs:codestack segment db 16 dup (0)stack endscode segment start: mov ax,stack mov ss,ax mov sp,16 mov ax,_____ push ax mov ax,_____ push ax retfcode endsend startCPU在执行retf指令时,会把栈中最低位的字的值赋给IP,把栈中最低位之后的次低

2020-07-19 16:45:49 400

原创 《汇编语言》检测点9.3

补全程序,利用loop指令,实现在内存2000h段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。assume cs:codecode segment start: mov ax,2000h mov ds,ax mov bx,0 s: mov cl,[bx] mov ch,0 _______ inc bx loop s ok: dec bx mov dx,bx mov ax,4cooh int 21hcode endsend sta

2020-07-19 16:45:08 834

原创 《汇编语言》检测点9.2

补全程序,利用jcxz指令,实现在内存2000h段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。assume cs:codecode segment start: mov ax,2000h mov ds,ax mov bx,0 s: _______ _______ _______ _______ jmp short s ok: mov dx,bx mov ax,4cooh int 21hcode endsend start

2020-07-19 16:44:58 680

原创 《汇编语言》检测点9.1

(1)程序如下。assume cs:codedata segment?data endscode segment start:mov ax,data mov ds,ax mov bx,0 jmp word ptr [bx+1]code endsend start 若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?由题知,jmp word ptr是段内转移,若要使程序执行jmp指令之后指向程序的第一条指令(段内偏移

2020-07-19 16:44:44 1035

原创 《汇编语言》检测点6.1

(1)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:assume cs:codesgcodesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h # 定义数据start: mov ax,0 mov ds,ax ; 定义内存起始段 mov bx,0 ; 定义内存偏移 mov cx,8 ; 定义循

2020-07-19 16:13:24 710

原创 《汇编语言》检测点3.2

(1)补全下面的程序,使其可以将 10000H~1000FH 中的8个字,逆序复制到 20000H~2000FH中。mov ax,1000Hmov ds,axmov ax,2000Hmov ss,axmov sp,0010Hpush [0]push [2]push [4]push [6]push [8]push [A]push [C]push [E](2)补全下面的程序,使其可以将 10000H~1000FH 中的8个字,逆序复制到 20000H~2000FH中。mov

2020-07-18 20:57:03 290

原创 《汇编语言》检测点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=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值。MOV AX,1 MOV DS,AX

2020-07-18 20:51:52 1204 7

vChain - 副本.pptx

于19年发表在数据库顶会SIGMOD上的区块链论文,有关于区块链中数据的存储和索引。作者在这篇论文中提出了一个名叫Vchain的框架,能够提高区块链中存储的数据的索引速度。

2020-06-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除