汇编试验十一:编写子程序

预备知识:

标志寄存器各位有具体的含义;

ZF:0标志位,计算结果是否为0

PF:奇偶标志位,二进制1的个数是否为偶数

SF:符号标志位,是否为负数

CF:进位标志位(无符号)

OF: 溢出标志(有符号)

adc指令:带进位加法指令

sbb指令:带借位减法指令

cmp指令:比较

比较结果的条件转移指令

pushf,popf:将标志寄存器中的值压栈(到栈中),弹出(将栈中的数据送入标志寄存器),为直接访问标志寄存器提供了一种方法;

字符串大小写转换:

Source Code:

assume cs:codesg

datasg segment
    db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends

codesg segment
begin:
    mov ax,datasg
    mov ds,ax
    mov si,0

    call letterc

    mov ax,4c00H
    int 21H

letterc:
    push cx
    pushf
    mov cx,0

    s:
        mov cl,ds:[si]
        jcxz ok

        cmp cl,7aH
        ja nextgo
        and cl,0dfh
        mov ds:[si],cl

    nextgo:
        inc si
        jmp short s
    ok:
        popf
        pop cx
        ret

codesg ends
end begin
View Code

原文地址:https://www.cnblogs.com/TreeDream/p/6992837.html