xuanjintao2007 发表于 2016-12-2 19:43:38

(新手)如果要求字符串从键盘中输入该怎么办?

data segment
      str1 db 'what is your name?',0ah,0dh,'$'
      cn EQU $-str1
      str2 EQU str1+cn-5          ; 定义str2单元
data ends
code segment
         assume ds:data,cs:code,es:data
start:mov ax,data
         mov ds,ax
         mov es,ax                  ; 段寄存器初始化
         mov dx,OFFSET str1
         mov ah,09h
         int 21h                  ; 显示字符串
         mov si,OFFSET str1         ; di指向原字符串首单元
         mov di,OFFSET str2         ; si指向目表位置首单元
         mov cx,cn                  ; 循环次数送cx
         add si,cn-1                ; si指向原串末单元
         add di,cn-1                ; di指向目标位置末单元
         std                        ; df=1
         rep movsb                  ; 重复传送
         mov dx,OFFSET str2
         mov ah,09h
         int 21h                  ; 显示字符串
         mov ah,4ch
         int 21h                  ; 返回DOS
code ends
         end start

xuanjintao2007 发表于 2016-12-3 08:31:43

顶一下

zealstar 发表于 2016-12-5 03:05:17

这个恐怕要参照in指令,你用金手指看一下吧。
另外,我还是比较看不懂你写的东西,大概还没看到后面{:10_266:}

比如 int 21h居然是显示字符串的指令?
比如 cn EQU $-str1 这种伪操作可行?cn的值是什么?{:10_245:}

xuanjintao2007 发表于 2016-12-5 17:55:43

zealstar 发表于 2016-12-5 03:05
这个恐怕要参照in指令,你用金手指看一下吧。
另外,我还是比较看不懂你写的东西,大概还没看到后面{:10_2 ...

这个程序的功能是将str1中的内容移动到str2中,是学校做实验的内容 现在要我们改一下

xuanjintao2007 发表于 2016-12-5 17:56:35

zealstar 发表于 2016-12-5 03:05
这个恐怕要参照in指令,你用金手指看一下吧。
另外,我还是比较看不懂你写的东西,大概还没看到后面{:10_2 ...

cn里存的是循环次数
页: [1]
查看完整版本: (新手)如果要求字符串从键盘中输入该怎么办?