汇编语言:cmp、je、jne、jb、jnb、ja、jna 指令

news2024/11/15 15:30:39

一. cmp 指令

1. cmp 指令功能      

        cmp (compare) 是比较指令,cmp 的功能相当于减法指令,只是不保存结果,但会根据结果对标志寄存器进行设置,其它相关指令就可以通过识别这些被影响的标志寄存器的位来得知比较结果。

2. cmp指令格式

        cmp 操作对象1, 操作对象2。

3. cmp 指令的 CPU 工作原理

对于指令:cmp ax, bx

        CPU 执行该指令,会计算 (ax) - (bx) ,然后根据结果对 CPU 的标志寄存器进行设置,那么,我们可以做以下分析:

  • 1. 如果 ax = bx,那么 ax - bx = 0,所以,ZF = 1
  • 2. 如果 ax != bx,那么 ax - bx != 0,所以,ZF = 0
  • 3. 如果 ax < bx,那么 ax - bx < 0,ax 的最高有效位将向假想的更高位借位,所以,CF = 1
  • 4. 如果 ax >= bx,那么 ax - bx >= 0,不用借位,所以,CF = 0
  • 5. 如果 ax > bx,那么 ax - bx > 0,所以,ZF = 0,不用借位,所以,CF = 0
  • 6. 如果 ax <= bx,那么 ax - bx <= 0,这时可能结果为 0 或可能要借位,所以 ZF = 1 或 CF = 1 

 tips:

        关于标志寄存器相关位表示的含义,可以看链接里博文的介绍汇编语言:标志寄存器ZF、PF、SF、CF、OF、DF、IF、AF_汇编pf标志位-CSDN博客

        那么对于CPU来说,执行 cmp ax bx 指令后,CPU 就可以通过标志寄存器对应位的值,从而知道比较 ax,bx 的大小的结果。

  • 1. 如果 ZF = 1,那么 ax = bx
  • 2. 如果 ZF = 0,那么 ax != bx
  • 3. 如果 CF = 1,那么 ax < bx
  • 4. 如果 CF = 0,那么 ax >= bx
  • 5. 如果 CF = 0 && ZF = 0,那么 ax > bx
  • 6. 如果 ZF = 1 || CF = 1,那么 ax <= bx

二. je 指令

        je(jump equal),等于则转移,检测的相关的标志:ZF = 1。

        指令格式:je 标号

        示例:

        je s        ;等于则跳转到 s 标号处执行指令,CPU实际是检测 ZF = 1

assume cs:code, ds:data
data segment
    db 'ax = bx',0
    db 'ax != bx',0
data ends
code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 3       ;ax = 3
    mov bx, 3       ;bx = 3
    cmp ax, bx      ;计算 ax - bx,并根据结果设置标志寄存器
    je ax_e_bx      ;等于则跳转,CPU实际是检测 ZF = 1
    mov cl, 4       ;红色
    call size_str   ;计算第一个显示的字符串占用的字节数,结果放在 ax 中
    mov si, ax      ;si = ax,指向第二个字符串的首地址
    jmp short ok    ;jmp短转移指令,相当于当前 IP,能转移的范围在:-128 ~ 127,即:IP - 128 ~ IP + 127 这个偏移地址
ax_e_bx:
    mov cl, 2       ;绿色
    mov si, 0       ;指向第一个字符串的首地址
ok:    
    mov dh, 14      ;14行
    mov dl, 32      ;32列
    call show_str   ;显示字符串

    mov ax, 4c00h
    int 21h

;名称:size_str
;功能:求一个以0结尾的字符串的长度
;参数:ds:si指向字符串的首地址
;返回:求的字符串长度存储在 ax 中
size_str:
    push cx
    mov ch, 0
    mov ax, 1
loop_size_str:
    mov cl, ds:[si]
    jcxz ok_size_str
    inc ax
    inc si
    loop loop_size_str
ok_size_str:
    pop cx
    ret

;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个以0结尾的字符串
;参数:dh=行号(取值范围:0-24),dl=列号(取值范围:0-79)
;      cl=颜色,ds:si指向字符串的首地址
;返回值:无
show_str:
    ;B8000h-BFFFFh共32kb,是80 * 25彩色字符模式的显示缓冲区,每页4kb(4000字节),显示器可以显示任意一页的内容。
    ;一般情况下,显示第0页的内容, 也就是说,B8000h ~ B8F9Fh 这4000个字节的内容会显示在显示器上。每行80个字,
    ;每个字占2个字节,低字节存放字符的assii码,高字节为属性字节。所以每行占160个字节
    mov ax, 0B800h  ;显示缓冲区段地址
    mov es, ax
    
    ;行
    mov al, 160     ;每行160个字节
    mul dh          ;8位乘法,一个数默认在al中,另一个在dh中,结果放在ax中
    mov bx, ax      ;行偏移字节
    ;列
    mov al, 2       ;一个字占2个字节,低字节存放字符的assii码,高字节为属性字节
    mul dl          ;8位,乘法,一个数默认在al中,另一个在dl中,结果放在ax中
    add bx, ax      ;行偏移字节 + 列偏移字节 = 相对于显示缓冲区段地址总的偏移地址

    mov ch, 0
    mov dl, cl      ;循环中需要用到cx寄存器,所以把存放字体属性的字节存放在dl中
loop_show_str:
    mov cl, ds:[si]
    jcxz ok_show_str        ;cx = 0,跳转到标号处执行,否则,继续顺序往下执行
    mov es:[bx], cl
    mov es:[bx+1], dl
    inc si
    add bx, 2
    loop loop_show_str
     
ok_show_str:    
    ret
code ends
end start

三. jne 指令

        jne(jump not equal),不等于则转移,检测的相关的标志:ZF = 0。

        指令格式:jne 标号

        示例:

        jne s        ;不等于则跳转到 s 标号处执行指令,CPU实际是检测 ZF = 0

assume cs:code, ds:data
data segment
    db 'ax = bx',0
    db 'ax != bx',0
data ends
code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 3       ;ax = 3
    mov bx, 4       ;bx = 4
    cmp ax, bx      ;计算 ax - bx,并根据结果设置标志寄存器
    jne ax_ne_bx    ;不等于则跳转,CPU实际是检测 ZF = 0
    mov cl, 2       ;绿色
    mov si, 0       ;指向第一个字符串的首地址
    jmp short ok    ;jmp短转移指令,相当于当前 IP,能转移的范围在:-128 ~ 127,即:IP - 128 ~ IP + 127 这个偏移地址
ax_ne_bx:
    mov cl, 4       ;红色
    call size_str   ;计算第一个显示的字符串占用的字节数,结果放在 ax 中
    mov si, ax      ;si = ax,指向第二个字符串的首地址
ok:    
    mov dh, 14      ;14行
    mov dl, 32      ;32列
    call show_str   ;显示字符串

    mov ax, 4c00h
    int 21h

;名称:size_str
;功能:求一个以0结尾的字符串的长度
;参数:ds:si指向字符串的首地址
;返回:求的字符串长度存储在 ax 中
size_str:
    push cx
    mov ch, 0
    mov ax, 1
loop_size_str:
    mov cl, ds:[si]
    jcxz ok_size_str
    inc ax
    inc si
    loop loop_size_str
ok_size_str:
    pop cx
    ret

;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个以0结尾的字符串
;参数:dh=行号(取值范围:0-24),dl=列号(取值范围:0-79)
;      cl=颜色,ds:si指向字符串的首地址
;返回值:无
show_str:
    ;B8000h-BFFFFh共32kb,是80 * 25彩色字符模式的显示缓冲区,每页4kb(4000字节),显示器可以显示任意一页的内容。
    ;一般情况下,显示第0页的内容, 也就是说,B8000h ~ B8F9Fh 这4000个字节的内容会显示在显示器上。每行80个字,
    ;每个字占2个字节,低字节存放字符的assii码,高字节为属性字节。所以每行占160个字节
    mov ax, 0B800h  ;显示缓冲区段地址
    mov es, ax
    
    ;行
    mov al, 160     ;每行160个字节
    mul dh          ;8位乘法,一个数默认在al中,另一个在dh中,结果放在ax中
    mov bx, ax      ;行偏移字节
    ;列
    mov al, 2       ;一个字占2个字节,低字节存放字符的assii码,高字节为属性字节
    mul dl          ;8位,乘法,一个数默认在al中,另一个在dl中,结果放在ax中
    add bx, ax      ;行偏移字节 + 列偏移字节 = 相对于显示缓冲区段地址总的偏移地址

    mov ch, 0
    mov dl, cl      ;循环中需要用到cx寄存器,所以把存放字体属性的字节存放在dl中
loop_show_str:
    mov cl, ds:[si]
    jcxz ok_show_str        ;cx = 0,跳转到标号处执行,否则,继续顺序往下执行
    mov es:[bx], cl
    mov es:[bx+1], dl
    inc si
    add bx, 2
    loop loop_show_str
     
ok_show_str:    
    ret
code ends
end start

四. jb 指令

        jb(jump below),小于则转移,检测的相关的标志:CF = 1。

        指令格式:jb 标号

        示例:

        jb s        ;小于则跳转到 s 标号处执行指令,CPU实际是检测 CF = 1

assume cs:code, ds:data
data segment
    db 'ax < bx',0
    db 'ax >= bx',0
data ends
code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 3       ;ax = 3
    mov bx, 4       ;bx = 4
    cmp ax, bx      ;计算 ax - bx,并根据结果设置标志寄存器
    jb ax_b_bx     ;小于则跳转,CPU实际是检测 CF = 1
    mov cl, 4       ;红色
    call size_str   ;计算第一个显示的字符串占用的字节数,结果放在 ax 中
    mov si, ax      ;si = ax,指向第二个字符串的首地址
    jmp short ok    ;jmp短转移指令,相当于当前 IP,能转移的范围在:-128 ~ 127,即:IP - 128 ~ IP + 127 这个偏移地址
ax_b_bx:
    mov cl, 2       ;绿色
    mov si, 0       ;指向第一个字符串的首地址
ok:    
    mov dh, 14      ;14行
    mov dl, 32      ;32列
    call show_str   ;显示字符串

    mov ax, 4c00h
    int 21h

;名称:size_str
;功能:求一个以0结尾的字符串的长度
;参数:ds:si指向字符串的首地址
;返回:求的字符串长度存储在 ax 中
size_str:
    push cx
    mov ch, 0
    mov ax, 1
loop_size_str:
    mov cl, ds:[si]
    jcxz ok_size_str
    inc ax
    inc si
    loop loop_size_str
ok_size_str:
    pop cx
    ret

;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个以0结尾的字符串
;参数:dh=行号(取值范围:0-24),dl=列号(取值范围:0-79)
;      cl=颜色,ds:si指向字符串的首地址
;返回值:无
show_str:
    ;B8000h-BFFFFh共32kb,是80 * 25彩色字符模式的显示缓冲区,每页4kb(4000字节),显示器可以显示任意一页的内容。
    ;一般情况下,显示第0页的内容, 也就是说,B8000h ~ B8F9Fh 这4000个字节的内容会显示在显示器上。每行80个字,
    ;每个字占2个字节,低字节存放字符的assii码,高字节为属性字节。所以每行占160个字节
    mov ax, 0B800h  ;显示缓冲区段地址
    mov es, ax
    
    ;行
    mov al, 160     ;每行160个字节
    mul dh          ;8位乘法,一个数默认在al中,另一个在dh中,结果放在ax中
    mov bx, ax      ;行偏移字节
    ;列
    mov al, 2       ;一个字占2个字节,低字节存放字符的assii码,高字节为属性字节
    mul dl          ;8位,乘法,一个数默认在al中,另一个在dl中,结果放在ax中
    add bx, ax      ;行偏移字节 + 列偏移字节 = 相对于显示缓冲区段地址总的偏移地址

    mov ch, 0
    mov dl, cl      ;循环中需要用到cx寄存器,所以把存放字体属性的字节存放在dl中
loop_show_str:
    mov cl, ds:[si]
    jcxz ok_show_str        ;cx = 0,跳转到标号处执行,否则,继续顺序往下执行
    mov es:[bx], cl
    mov es:[bx+1], dl
    inc si
    add bx, 2
    loop loop_show_str
     
ok_show_str:    
    ret
code ends
end start

五. jnb 指令

        jnb(jump not below),不小于则转移,检测的相关的标志:CF = 0。

        指令格式:jnb 标号

        示例:

        jnb s        ;不小于则跳转到 s 标号处执行指令,CPU实际是检测 CF = 0

assume cs:code, ds:data
data segment
    db 'ax < bx',0
    db 'ax >= bx',0
data ends
code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 3       ;ax = 3
    mov bx, 3       ;bx = 3
    cmp ax, bx      ;计算 ax - bx,并根据结果设置标志寄存器
    jnb ax_nb_bx    ;不小于则跳转,CPU实际是检测 CF = 0
    mov cl, 2       ;绿色
    mov si, 0       ;指向第一个字符串的首地址
    jmp short ok    ;jmp短转移指令,相当于当前 IP,能转移的范围在:-128 ~ 127,即:IP - 128 ~ IP + 127 这个偏移地址
ax_nb_bx:
    mov cl, 4       ;红色
    call size_str   ;计算第一个显示的字符串占用的字节数,结果放在 ax 中
    mov si, ax      ;si = ax,指向第二个字符串的首地址
ok:    
    mov dh, 14      ;14行
    mov dl, 32      ;32列
    call show_str   ;显示字符串

    mov ax, 4c00h
    int 21h

;名称:size_str
;功能:求一个以0结尾的字符串的长度
;参数:ds:si指向字符串的首地址
;返回:求的字符串长度存储在 ax 中
size_str:
    push cx
    mov ch, 0
    mov ax, 1
loop_size_str:
    mov cl, ds:[si]
    jcxz ok_size_str
    inc ax
    inc si
    loop loop_size_str
ok_size_str:
    pop cx
    ret

;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个以0结尾的字符串
;参数:dh=行号(取值范围:0-24),dl=列号(取值范围:0-79)
;      cl=颜色,ds:si指向字符串的首地址
;返回值:无
show_str:
    ;B8000h-BFFFFh共32kb,是80 * 25彩色字符模式的显示缓冲区,每页4kb(4000字节),显示器可以显示任意一页的内容。
    ;一般情况下,显示第0页的内容, 也就是说,B8000h ~ B8F9Fh 这4000个字节的内容会显示在显示器上。每行80个字,
    ;每个字占2个字节,低字节存放字符的assii码,高字节为属性字节。所以每行占160个字节
    mov ax, 0B800h  ;显示缓冲区段地址
    mov es, ax
    
    ;行
    mov al, 160     ;每行160个字节
    mul dh          ;8位乘法,一个数默认在al中,另一个在dh中,结果放在ax中
    mov bx, ax      ;行偏移字节
    ;列
    mov al, 2       ;一个字占2个字节,低字节存放字符的assii码,高字节为属性字节
    mul dl          ;8位,乘法,一个数默认在al中,另一个在dl中,结果放在ax中
    add bx, ax      ;行偏移字节 + 列偏移字节 = 相对于显示缓冲区段地址总的偏移地址

    mov ch, 0
    mov dl, cl      ;循环中需要用到cx寄存器,所以把存放字体属性的字节存放在dl中
loop_show_str:
    mov cl, ds:[si]
    jcxz ok_show_str        ;cx = 0,跳转到标号处执行,否则,继续顺序往下执行
    mov es:[bx], cl
    mov es:[bx+1], dl
    inc si
    add bx, 2
    loop loop_show_str
     
ok_show_str:    
    ret
code ends
end start

六. ja 指令

        ja(jump above),高于则转移,检测的相关的标志:CF = 0 && ZF = 0。

        指令格式:ja 标号

        示例:

        ja s        ;高于则跳转到 s 标号处执行指令,CPU实际是检测 CF = 0 && ZF = 0

assume cs:code, ds:data
data segment
    db 'ax > bx',0
    db 'ax <= bx',0
data ends
code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 3       ;ax = 3
    mov bx, 2       ;bx = 2
    cmp ax, bx      ;计算 ax - bx,并根据结果设置标志寄存器
    ja ax_a_bx     ;高于则跳转,CPU实际是检测 CF = 0 && ZF = 0
    mov cl, 4       ;红色
    call size_str   ;计算第一个显示的字符串占用的字节数,结果放在 ax 中
    mov si, ax      ;si = ax,指向第二个字符串的首地址
    jmp short ok    ;jmp短转移指令,相当于当前 IP,能转移的范围在:-128 ~ 127,即:IP - 128 ~ IP + 127 这个偏移地址
ax_a_bx:
    mov cl, 2       ;绿色
    mov si, 0       ;指向第一个字符串的首地址
ok:    
    mov dh, 14      ;14行
    mov dl, 32      ;32列
    call show_str   ;显示字符串

    mov ax, 4c00h
    int 21h

;名称:size_str
;功能:求一个以0结尾的字符串的长度
;参数:ds:si指向字符串的首地址
;返回:求的字符串长度存储在 ax 中
size_str:
    push cx
    mov ch, 0
    mov ax, 1
loop_size_str:
    mov cl, ds:[si]
    jcxz ok_size_str
    inc ax
    inc si
    loop loop_size_str
ok_size_str:
    pop cx
    ret

;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个以0结尾的字符串
;参数:dh=行号(取值范围:0-24),dl=列号(取值范围:0-79)
;      cl=颜色,ds:si指向字符串的首地址
;返回值:无
show_str:
    ;B8000h-BFFFFh共32kb,是80 * 25彩色字符模式的显示缓冲区,每页4kb(4000字节),显示器可以显示任意一页的内容。
    ;一般情况下,显示第0页的内容, 也就是说,B8000h ~ B8F9Fh 这4000个字节的内容会显示在显示器上。每行80个字,
    ;每个字占2个字节,低字节存放字符的assii码,高字节为属性字节。所以每行占160个字节
    mov ax, 0B800h  ;显示缓冲区段地址
    mov es, ax
    
    ;行
    mov al, 160     ;每行160个字节
    mul dh          ;8位乘法,一个数默认在al中,另一个在dh中,结果放在ax中
    mov bx, ax      ;行偏移字节
    ;列
    mov al, 2       ;一个字占2个字节,低字节存放字符的assii码,高字节为属性字节
    mul dl          ;8位,乘法,一个数默认在al中,另一个在dl中,结果放在ax中
    add bx, ax      ;行偏移字节 + 列偏移字节 = 相对于显示缓冲区段地址总的偏移地址

    mov ch, 0
    mov dl, cl      ;循环中需要用到cx寄存器,所以把存放字体属性的字节存放在dl中
loop_show_str:
    mov cl, ds:[si]
    jcxz ok_show_str        ;cx = 0,跳转到标号处执行,否则,继续顺序往下执行
    mov es:[bx], cl
    mov es:[bx+1], dl
    inc si
    add bx, 2
    loop loop_show_str
     
ok_show_str:    
    ret
code ends
end start

七. jna 指令

        jna(jump not above),不高于则转移,检测的相关的标志:CF = 1 || ZF = 1。

        指令格式:jna 标号

        示例:

        jna s        ;不高于则跳转到 s 标号处执行指令,CPU实际是检测 CF = 1 || ZF = 1

assume cs:code, ds:data
data segment
    db 'ax > bx',0
    db 'ax <= bx',0
data ends
code segment
start:
    mov ax, data
    mov ds, ax

    mov ax, 3       ;ax = 3
    mov bx, 3       ;bx = 3
    cmp ax, bx      ;计算 ax - bx,并根据结果设置标志寄存器
    jna ax_na_bx     ;不高于则跳转,CPU实际是检测 CF = 1 || ZF = 1
    mov cl, 2       ;绿色
    mov si, 0       ;指向第一个字符串的首地址
    jmp short ok    ;jmp短转移指令,相当于当前 IP,能转移的范围在:-128 ~ 127,即:IP - 128 ~ IP + 127 这个偏移地址
ax_na_bx:
    mov cl, 4       ;红色
    call size_str   ;计算第一个显示的字符串占用的字节数,结果放在 ax 中
    mov si, ax      ;si = ax,指向第二个字符串的首地址
ok:    
    mov dh, 14      ;14行
    mov dl, 32      ;32列
    call show_str   ;显示字符串

    mov ax, 4c00h
    int 21h

;名称:size_str
;功能:求一个以0结尾的字符串的长度
;参数:ds:si指向字符串的首地址
;返回:求的字符串长度存储在 ax 中
size_str:
    push cx
    mov ch, 0
    mov ax, 1
loop_size_str:
    mov cl, ds:[si]
    jcxz ok_size_str
    inc ax
    inc si
    loop loop_size_str
ok_size_str:
    pop cx
    ret

;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个以0结尾的字符串
;参数:dh=行号(取值范围:0-24),dl=列号(取值范围:0-79)
;      cl=颜色,ds:si指向字符串的首地址
;返回值:无
show_str:
    ;B8000h-BFFFFh共32kb,是80 * 25彩色字符模式的显示缓冲区,每页4kb(4000字节),显示器可以显示任意一页的内容。
    ;一般情况下,显示第0页的内容, 也就是说,B8000h ~ B8F9Fh 这4000个字节的内容会显示在显示器上。每行80个字,
    ;每个字占2个字节,低字节存放字符的assii码,高字节为属性字节。所以每行占160个字节
    mov ax, 0B800h  ;显示缓冲区段地址
    mov es, ax
    
    ;行
    mov al, 160     ;每行160个字节
    mul dh          ;8位乘法,一个数默认在al中,另一个在dh中,结果放在ax中
    mov bx, ax      ;行偏移字节
    ;列
    mov al, 2       ;一个字占2个字节,低字节存放字符的assii码,高字节为属性字节
    mul dl          ;8位,乘法,一个数默认在al中,另一个在dl中,结果放在ax中
    add bx, ax      ;行偏移字节 + 列偏移字节 = 相对于显示缓冲区段地址总的偏移地址

    mov ch, 0
    mov dl, cl      ;循环中需要用到cx寄存器,所以把存放字体属性的字节存放在dl中
loop_show_str:
    mov cl, ds:[si]
    jcxz ok_show_str        ;cx = 0,跳转到标号处执行,否则,继续顺序往下执行
    mov es:[bx], cl
    mov es:[bx+1], dl
    inc si
    add bx, 2
    loop loop_show_str
     
ok_show_str:    
    ret
code ends
end start

        

参考

《汇编语言(第4版)》- 王爽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2070627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫:selenium+browsermobproxy实现浏览器请求抓取(模块安装详解)

前言 本来很多场景用beautiful和requests就能解决的&#xff0c;但是最近发现了某些网站会使用<link>来链接网页信息&#xff0c;让我没办法通过requests获取页面的具体内容&#xff1b;并且接口也加入了某种token的生成方案&#xff0c;导致我无从下手。 因此&#xff0…

Scrapy 分布式爬虫框架 Scrapy-Redis

github官网代码示例&#xff1a;https://github.com/rmax/scrapy-redis/blob/master/example-project/example/spiders/myspider_redis.py 什么是 Scrapy-Redis Scrapy-Redis 是一个基于 Scrapy 的扩展&#xff0c;用于实现分布式爬虫。它利用 Redis 作为分布式队列来共享待爬…

.NET_web前端框架_layui_栅格布局

基础概念 layui:用于简化前端编写的框架。响应式布局&#xff08;Responsive Layout&#xff09;:一种网页设计方法&#xff0c;使网页能够根据不同设备的屏幕尺寸和分辨率自动调整其内容和布局。栅格布局&#xff08;Grid Layout&#xff09;:一种网页设计布局方法&#xff0c…

计算机毕业设计选题推荐-OA办公管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

【IEEE出版,连续7年稳定发表】第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024,10月25-27)

由西京学院主办&#xff0c;AEIC学术交流中心协办&#xff0c;中国科学技术大学、深圳大学、浙江工业大学等校联合支持的第八届电气、机械与计算机工程国际学术会议&#xff08;ICEMCE 2024&#xff09;将于2024年10月25日至27日在西安举办。 本次会议主要围绕“电气”、"…

电脑文件自动加解密如何实现?3个方法教会你!

电脑文件的自动加解密是一项非常实用的功能&#xff0c;可以帮助确保数据的安全性。 以下是三种实现电脑文件自动加解密的方法&#xff1a; 方法一&#xff1a;使用操作系统自带的加密功能 Windows BitLocker&#xff1a; 启用BitLocker&#xff1a;在Windows系统中&#xf…

SpringBoot 项目——抽奖系统

本项目主要实现的功能是&#xff1a;主要服务于管理员用户&#xff0c;其可圈选奖品&#xff0c;人员来创建抽奖活动&#xff0c;并进行在线抽奖&#xff0c;并可通过短信或邮件的方式通知中奖者&#xff0c;同时普通用户可查看已结束的抽奖活动的中奖结果&#xff1b; 一、项…

ViT篇外:NVIDIA Llama-3.1-Minitron 4B

相关阅读&#xff1a; ViT&#xff1a;3 Compact Architecture MobileLLM&#xff1a;“苗条”的模型比较好&#xff01; 大家也许会很好奇为什么在ViT章节插入了NVIDIA Llama-3.1-Minitron 4B&#xff0c;ViT因为应用场景的特殊性所以都寄希望于高效率的模型&#xff0c;因…

【C语言】浮点型数据在内存中的储存

浮点型数据在内存中的储存 文章目录 浮点型数据在内存中的储存引例概念提出浮点型数据储存规定对于有效数字M的特别规定对于指数E的特别规定指数E的储存指数E的读取 利用规则解释原因 在之前学习过整形数据在内存中的储存后&#xff0c;浮点型数据在内存中的储存又会怎样呢&…

AI辅助论文写作已成大趋势,这些AI工具分享给你

近年来&#xff0c;人工智能语言模型迅速发展&#xff0c;特别是在美国人工智能研究实验室 OpenAI 于 2022 年 11 月发布了聊天机器人 ChatGPT 后&#xff0c;引发了全球范围内的广泛讨论。人们惊叹着一个新的人工智能时代已经到来&#xff0c;预示着许多工作将被这类机器人所取…

二叉树刷题(1)

二叉树题目讲解&#xff08;1&#xff09; 一、构建二叉树并且遍历&#xff08;1&#xff09;思路&#xff08;2&#xff09;代码 二、对称二叉树1、思路2、代码 三、相同的树1、思路2、代码 四、单值二叉树1、思路2、代码 五、另一棵树的子树1、思路2、代码 一、构建二叉树并且…

【Rust日报】一本新书:黑帽Rust

2024 Rust中国大会大会将于 9 月 07 日 - 08 日在上海举办。精彩议题逐步放出中&#xff0c;欢迎大家面对面交流。 2024 Rust中国大会报名链接暨第一批精彩演讲主题介绍 2024 Rust中国大会第二批精彩演讲主题列表 2024 Rust中国大会第三批精彩演讲主题列表 马尔科夫文本生成算法…

多线程(5)——锁策略、CAS、JUC常见类

1. 常见锁策略 1.1 乐观锁 & 悲观锁 乐观锁 & 悲观锁 也不是指具体某个锁&#xff0c;而是 “锁的一种特点”&#xff0c;描述了 “一类锁” 乐观锁&#xff1a;加锁的时候&#xff0c;假设出现锁冲突的概率不大 > 接下来围绕加锁要做的工作就会更少悲观锁&#…

minio 后端大文件分片上传,合并,删除分片

背景 网上大多数minio大文件上传都是采用后台返回前端预上传链接&#xff0c;然后由前端去put请求直接和minio通信上传分片文件&#xff0c;然后调用后台合并分片逻辑来达到快申诉上传的目的&#xff0c;详情可以参考我的上两篇文章 最近有个项目域名是https的&#xff0c;但…

# 低代码和无代码开发初探

低代码和无代码开发初探 低代码和无代码都是近年来在软件开发领域兴起的技术趋势&#xff0c;它们旨在提高开发效率、降低开发门槛&#xff0c;让更多人能够参与到软件开发过程中。以下是对低代码和无代码的介绍&#xff1a; 一、低代码 1、低代码定义 低代码开发平台&…

Linux nice/renice 命令 - 进程的NI、PRI属性

进程NI、PRI属性的联系 共同影响进程调度&#xff1a;NI和PRI都是Linux进程调度机制中的重要参数&#xff0c;它们共同决定了进程在CPU资源竞争中的优先级。NI值通过影响PRI值来间接影响进程的调度顺序。NI值可调整以改变PRI值&#xff1a;用户可以通过调整进程的NI值来间接改…

较难!第15届蓝桥杯青少组省赛Scratch中级组编程真题

今天上午第15届蓝桥杯青少组省赛Scratch初级组考完试以后&#xff0c;Scratch实验室就预估今天下午的Scratch中级组比较难&#xff0c;结果不出所料&#xff0c;还是比较有难度&#xff0c;据好几个学生及家长说&#xff0c;好几道题不会做时间不够。 来源&#xff1a;结束啦&a…

三级_网络技术_43_综合题(报文)

一、 某客户机使用DHCP获取IP地址等信息&#xff0c;其获取lP地址过程中捕获的4条报文及对第2条报文分析如下所示。请分析其中的信息&#xff0c;补全内容。 编号 报文摘要 DHCP:Request, Type:DHCP discover DHCP:Reply, Type:DHCP__________ DHCP:Request, Type:DHCP Re…

DBeaver安装使用

文章目录 简介支持的数据库支持的系统 下载安装DBeaver使用修改Maven下载jar地址窗口->首选项连接->驱动->Maven配置仓库地址 选择需要连接的数据库进行连接 简介 DBeaver 是一个通用的数据库管理工具和 SQL 客户端&#xff0c;支持 MySQL, PostgreSQL, Oracle, DB2,…

人生苦短,转行程序员要趁早啊

前言 最近有朋友咨询关于如何自学编程语言的问题&#xff0c;发现要回答这个问题&#xff0c;不是一俩句就可以回答清楚并减少当事人的困惑和迷茫。 笔者不知道提问者是问的学习方法还是学习路径&#xff0c;所以特此写一篇文章&#xff0c;斗胆表达一下我对自学编程的一点点…