中易网

关于汇编字符串数组输出问题?

答案:1  悬赏:20  
解决时间 2021-10-13 11:45
关于汇编字符串数组输出问题?
最佳答案
; 本程序通过编译,运行正确
Code  Segment
  Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output  MACRO Str_Addr
  lea  dx,Str_Addr
  mov  ah,9
  int  21h
  EndM
; -----------------------------------------
; 功能:输出回车换行
Enter_CTLF proc Near
  push  ax
  push  dx
  mov  ah,02h
  mov  dl,0dh
  int  21h
  mov  dl,0ah
  int  21h
  pop  dx
  pop  ax
  ret
Enter_CTLF endp
; -----------------------------------------
N   equ  20
Prompt_Str db  'Please input words: $'
Addr_Words dw  N dup(?) ;预置N个字符串地址,实际输入的单词个数不会超过N个。
Strings  dw  ? ;实际输入的单词个数
Start:   push cs
  pop  ds
  push cs
  pop  es ;使数据段、附加段与代码段同段
  cld
  lea  di,Addr_Words
  lea  si,Words ;字符串缓冲区地址
  mov  cx,N ;最多输入N个单词
  Output Prompt_Str ;提示输入单词
Input_Word: call Enter_CTLF ;输出一个回车、换行
  mov  byte ptr [si],21 ;每个单词最多20个字符
  mov  dx,si
  inc  si
  mov  ah,0ah
  int  21h
  lodsb ;读入实际输入的字符个数,即单词长度
  test al,0ffh ;若直接回车?
  jz  @@L1 ;是,结束单词输入
  xor  ah,ah
  mov  bx,ax
  mov  ax,si
  stosw ;保存这个单词的地址
  add  si,bx
  mov  [si],'$' ;使之能用dos功能调用9号功能显示这个字符串(单词)
  inc  si
  loop Input_Word ;输入下一个单词
@@L1:  sub  di,offset Addr_Words
  shr  di,1
  mov  Strings,di ;保存实际输入的单词个数
Exit_Proc: mov  ah,4ch ;结束程序
  int  21h
Words  db  ?
Code  ENDS
  END   Start ;编译到此结束

13
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
品尚豆捞加盟费多少
上海中亿科技投资有限公司的股票推荐服务怎么
2011涿州庙会什么时候取消
请问电脑如何用光盘装系统
我今年46岁,己停经两月有余,但十天前
唐镇小学怎么样
问问各位大神们电脑卡机什么原因
那位知道,德外安德路77号院什么时候拆?
广东省内一天或两天游去哪里好?
开一家300平米普通重庆餐馆装修需要多少钱
中国结手工哪有代加工
从扬州火车站去扬子江北路双桥商务广场A区533
北京婚庆 会场 金牌主持 车队 录像
白癫疯的饮食注意
挂在墙上的电话叫什么,只可以接听的!
推荐资讯
重庆大溪沟公积金在哪里贷款
熟地 当归 黄芪 黑豆 木瓜 杞子 五加皮 巴戟
插座引线方法是什么
为什么打不开可移动磁盘
金颂复印照相地址在什么地方,我要处理点事!
羊毛球批发价格是多少?
上海松江区的快递公司送快递多少钱一个月?
皮皮虾和螃蟹什么时候最肥呀?去海边哪里吃最
武林外传里佟掌柜儿时的好友说的是什么地方的
战斗机发动机加力什么时候用?用多长时间?
云水禅心古筝艺术中心地址在哪,我要去那里办
钓鲤鱼用什么饵最好?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?