zoukankan      html  css  js  c++  java
  • 汇编语言十一

    assume cs:code
    
    data segment
        db "Beginner's All-purpose Symblic Instruction Code.",0
    data ends
    
    code segment
      start:                            
        mov ax,data                        
        mov ds,ax                        ;ds 段寄存器中存放要操作的源数据的段地址
        mov si,0                         ;初始偏移地址为 0
        call letterc                     ;调用子程序
        mov ah,4ch
        int 21h
    
    
    letterc:                             ;子程序开始执行前 ds:si 指向字符串的入口地址
        push cx
        push si                          ;子程序执行前照常进行寄存器的保护工作
    
      lnext:
        sub ch,ch                        ;ch 寄存器置零, 以备 loop 指令使用
        mov cl,[si]                      ;将字符串第一个字符放进 cl 寄存器, 8bit
        jcxz lret                        ;如果还没到最后一个 0 的话, 则继续执行下一个指令, 一旦将字符串的最后一个 0 移入 cl 后, cx 寄存器为零, 程序跳转到 lret 标号处执行
        cmp cl,'a'                       ;比较指令
        jb  plusi                        
        cmp cl,'z'
        ja  plusi
        and byte ptr [si],11011111b      ;前面执行了两次 cmp 指令, 只有当ds:si指向的字符为小写字母时, 才将其转变为大写字母
     plusi:
        inc si
        jmp short lnext 
     lret:  
        pop si
        pop cx         
    ret    
    code ends
    end start
  • 相关阅读:
    (2015年郑州轻工业学院ACM校赛题) B迷宫
    (2015年郑州轻工业学院ACM校赛题) A 彩票
    POJ 1861 Network
    动态逆序对
    K大数查询
    Dynamic Rankings
    Cleaning
    Boxes
    P3601 签到题
    How many integers can you find
  • 原文地址:https://www.cnblogs.com/KKSJS/p/10016145.html
Copyright © 2011-2022 走看看