• 【汇编程序】统计字符'A'在字符串中出现的次数


    ;str是一个以'$'为结束的字符串,如下程序统计字符'A'在字符串中出现的次数,并将统计的结果
    ;送到count单元,用汇编语言完成此程序的设计
    data segment           ; //data segment 定义一个数据段
        str DB 'AAAACAHjsjisjaidsajis','$';定义str串   在汇编中终止符是'$' c语言中是'' 因此定义'$'结束符
        count DB 0         ;定义count字节单位 初始值0
     data ends             ;数据段结束
    stact segment para stack  ;创建一个堆栈段 名称stact segment 段定义语句 para:属于定位类型默认是para 节
        buffer db 128 dup(0) ;定义100个字节的堆栈空间
     stact ends            ;堆栈结束标志
    code segment           ;定义一个代码段 code segment
        assume ds:data,cs:code,ss:stack;分配段寄存器  assume ds:data,cs:code,ss:stack 段分配语句
      start:mov ax,data    ;start标号 将data的段地址赋值给ax
            mov ds,ax      ;将ax中的data的段地址赋值给ds
            mov cl,0       ;cl 用来计数'A'出现的次数
            lea si,str     ;装入str有效地址到si  这里有一个知识点就是对于字符串操作 
                           ;源串位于当前数据段中,ds寻址 si做指针
                           ;目标串位于当前附加段中 es寻址 di做指针
       lp1:mov al,[si]     ;取str中的一个字符送到寄存器
           cmp al,'A'      ;将al中取到的一个字节的字符与'A'比较
           jz sum          ;如果是'A' 字符转统计     jz如果是0 表名al中的字符与'A'相等
           cmp al,'$'      ;比较是否为字符串结束符  判断是否是结束标志'$'
           jz exit         ;如果是$ 转    
           inc si          ;调整si 对si加1
           jmp lp1         ;jmp 跳转到lp1 重新执行
       sum:inc cl          ;如果是'A'字符 将cl寄存器 加+1 
           inc si          ;对偏移地址加1
           jmp lp1         ;跳转到lp1中
       exit: mov count,cl  ;结果送到count单元
           mov ah,4ch      ;程序终止
           int 21h         ;返回dos
       code ends           ;代码段结束
            end start      ;程序结束
     
      
  • 相关阅读:
    极坐标
    OpenGL: 你不知道的左右手坐标系
    三角函数定义
    计算机中负数的表示与加法计算
    Vue3.x知识图谱
    数的类型
    Mac Xcode卸载后Git无法使用的解决
    JS 时间格式化
    python列表和元素的区别_python数组和列表区别
    微信小程序常用样式汇总
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860894.html
Copyright © 2020-2023  润新知