鱼C论坛

 找回密码
 立即注册
查看: 4145|回复: 2

[已解决]请各位看看这道汇编题怎么做

[复制链接]
发表于 2020-10-29 21:26:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请在数据段中定义以下2个数组:
s db 100 dup(0)
t db 100 dup (0)
代码段中实现以下功能:
输入- -行字符(敲回车结束输入)并保存到数组s中,
其中回车转化成ASCI I码00h保存到数组中,
再把s中的每个元素逐个取出判断:
(1)若元素为小写字母则把它转化成大写并保存到数组t中;
(2)若元素为空格则丢弃该元素,不要保存到t中;
(3)若元素为其它字符则原样保存到t中;
最后输出t中的全部元素再输出回车换行。
提示:
(1)可以循环调用int 21h的01h功能实现一行字符的输入;
(2)可以循环调用int 21h的02h功能实现一行字符的输出;
(3) 数组s和t的下标可以分别用寄存器si、di表示;



求完整代码QAQ、
跪谢各位


最佳答案
2020-10-30 15:32:05
本帖最后由 xieglt 于 2020-10-30 15:38 编辑
  1. assume cs:code

  2. data segment
  3.         s db 100 dup(0)
  4.         t db 100 dup(0)
  5. data ends

  6. code segment
  7. start:
  8.         mov ax,data
  9.         mov ds,ax
  10.         mov es,ax
  11.         lea di,s
  12.         mov cx,99
  13. _input:
  14.         mov ah,01
  15.         int 21h
  16.         ;输入回车结束
  17.         cmp al,13
  18.         je  _is_Enter
  19.         stosb
  20.         loop _input
  21. _is_Enter:
  22.         xor ax,ax
  23.         stosb
  24.         dec cx

  25.         ;统计输入字符数,设置为循环计数
  26.         sub cx,99
  27.         not cx

  28.         lea si,s
  29.         lea di,t
  30. _s2t:
  31.         ;从 s 取一个字符
  32.         lodsb
  33.         ;是否空格,是则跳转
  34.         cmp al,32
  35.         je  _is_space
  36.         ;是否 < 'a',是则跳转
  37.         cmp al,'a'
  38.         jl  _isnot_lettle
  39.         ;是否 > 'z',是则跳转
  40.         cmp al,'z'
  41.         jg _isnot_lettle
  42.         ;是小写字母减32变成大写字母
  43.         sub al,32
  44. _isnot_lettle:
  45.         ;保存字符进t
  46.         stosb
  47.         ;忽略空格语句标号
  48. _is_space:
  49.     ;循环
  50.         loop _s2t
  51.        
  52.         ;输出换行回车
  53.         mov dl,10
  54.         mov ah,2
  55.         int 21h
  56.         mov dl,13
  57.         mov ah,2
  58.         int 21h
  59.        
  60.         ;循环输出t中的字符,遇到0结束
  61.         lea si,t
  62. _output:
  63.         lodsb
  64.         test al,al
  65.         je _over
  66.         mov dl,al
  67.         mov ah,2
  68.         int 21h
  69.         jmp _output
  70. _over:

  71.         ;输出换行回车
  72.         mov dl,10
  73.         mov ah,2
  74.         int 21h
  75.         mov dl,13
  76.         mov ah,2
  77.         int 21h

  78.         mov ax,4c00h
  79.         int 21h
  80. code ends
  81. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-30 15:32:05 | 显示全部楼层    本楼为最佳答案   
此帖仅作者可见
小甲鱼最新课程 -> https://ilovefishc.com

使用道具 举报

 楼主| 发表于 2020-11-5 18:55:01 | 显示全部楼层
此帖仅作者可见
小甲鱼最新课程 -> https://ilovefishc.com

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-8 12:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表