zoukankan      html  css  js  c++  java
  • 寒假汇编语言作业(5)

    程序设计项目五

     

    定义一个数据段如下:

    data segment

        db 'h12E332l@L#O*&^!88nI@cE$% %$T1O m33E44E55t y77O88u!()'

        db '?'

    data ends

    注意:第一行字符串为待处理的数据,'?'为字符串结束符号。

     

    设计程序完成如下操作:

    (1)去掉除字母、空格、'!'之外的字符;

    (2) 通过内存间的数据交换,将数据段中的字符串修改为'Hello!Nice to meet you!';

    (3)在屏幕正中打印处理好后的数据。

     

    完成程序后思考:

    (1)如何设计程序,程序代码量最少;

    (2)如何设计程序,程序执行速度最快;

    (3)如何设计程序,使得程序具有通用性。

    注意:

    (1)'?'、'!'和空格分别假定为字符串的结束符、一句话的最后的标点和单词间的间隔符,都不属于干扰符号。

    (2)这里的通用性是指:任意带有其他符号干扰的一组字符串都能够通过程序被处理为具有如下特点的英文段落:段落中只包含字母、空格、'!'三种符号。段落中的每句话都是以开头字母为大写,'!'为结束标点的句子。

     

    感觉写的还是有点乱

    参考程序:

     1 assume cs:code
     2 data segment
     3     db 'h12E332l@L#O*&^!88nI@cE$% %$T1O m33E44E55t y77O88u!()'
     4     db '?'
     5 data ends
     6 
     7 stack segment
     8         dw 8 dup (0)
     9 stack ends
    10 
    11 code segment
    12 start:
    13         mov ax,data
    14         mov ds,ax
    15         mov ax,0b800h
    16         mov es,ax
    17         mov ax,stack
    18         mov ss,ax
    19         mov sp,10h
    20         mov si,0
    21         mov di,2140
    22         mov bp,0
    23         mov cx,1      ;默认大写开始  cx=1大写  cx=0小写
    24 
    25     main_L:              ;主循环
    26         mov al,ds:[si]
    27         mov ah,71h
    28         cmp al,'?'
    29         je ok_mL
    30         cmp al,'!'
    31         je do_gankan      ;置位
    32         cmp al,' '
    33         je pprint
    34         or al,00100000b
    35         cmp al,'a'
    36         jb move_shuju   ;清理不识别字符
    37         cmp al,'z'
    38         ja move_shuju
    39         jcxz pprint       ; 判断大小写
    40         and al,11011111b
    41         mov cx,0
    42 
    43     pprint:           ;打印,清理
    44         call get_shuju
    45         jmp print
    46 
    47     go_next: 
    48         inc si
    49         jmp main_L
    50 
    51     ok_mL:
    52         mov ax,4c00h
    53         int 21h
    54 
    55     do_gankan:
    56         mov cx,1
    57         jmp pprint
    58 
    59     print:
    60         mov es:[di],ax
    61         add di,2
    62         jmp go_next
    63 
    64     move_shuju:
    65         mov byte ptr ds:[si],0
    66         jmp go_next
    67 
    68     get_shuju:
    69         mov byte ptr ds:[si],0
    70         mov ds:[bp],al
    71         inc bp
    72         ret
    73 
    74 code ends
    75 end start
    hj5.asm
  • 相关阅读:
    ext与xfs文件系统比较与总结
    MySQL prepare 原理
    MySQL 性能监控 4 大指标
    MySQL数据库设计规范
    What To Do When MySQL Runs Out of Memory: Troubleshooting Guide
    MySQL 8.0 —— CATS事务调度算法的性能提升
    MySQL5.7中的sql_mode默认值
    MySQL8.0——Resource Group(资源组)
    MySQL 8.0 —— 数据字典
    mysqlreport工具
  • 原文地址:https://www.cnblogs.com/regconfi/p/4236522.html
Copyright © 2011-2022 走看看