7.16 王爽汇编语言(十三)

中间笔记

主要学习了 and 指令和 or 指令,示例程序如下:

; 将 datasg 中的第一个字符串转化为大写
; 将 datasg 中的第二个字符串转化为小写
assume cs: codesg, ds: datasg

datasg segment

    db 'BaSiC'
    db 'iNfOrMaTiOn'

datasg ends

codesg segment

start:
    mov ax, datasg
    mov ds, ax  ; 设置 ds 指向 datasg 段

    mov bx, 0   ; 设置 (bx) = 0,ds:bx 指向'BaSiC'的第一个字母

    mov cx, 5   ; 设置循环次数 5,因为 'BaSiC'有5个字母
s:
    mov al, [bx]    ; 将 ASCII 码从 ds:bx 所指向的内存单元中取出
    and al, 11011111B   ; 将 al 中的 ASCII 码的第 5 位置设置为 0,变成大写字母
    mov [bx], al    ; 将转变后的 ASCII 码写回原来的内存单元
    inc bx
    loop s

    mov bx, 5   ; 设置(bx)= 5,ds:bx 指向 'iNfOrMaTiOn'的第一个字母

    mov cx, 11  ; 设置循环次数 11,因为 'iNfOrMaTiOn'有11个字母
s0:
    mov al, [bx]
    or al, 00100000B    ; 将 al 中的 ASCII 码的第 5 位置设置为1,变为小写字母
    mov [bx], al
    inc bx
    loop s0

    mov ax, 4c00h
    int 21h

codesg ends

end start

总结

前两天没学习呢~ 玩联盟去了~

Last Updated:
Contributors: Hunter-0x07