首页 > 解决方案 > 在 Assembly (.exe) 中将 2 个字符串组合成一个较长的字符串 - 此代码如何工作?

问题描述

我在汇编程序中收到了一个将 2 个字符串加在一起的代码。不幸的是,我不明白这个程序从第 21 行到第 42 行是如何工作的。有人可以描述这个程序在这个领域是如何工作的吗?谢谢!

                     .MODEL  SMALL
     
     Data           SEGMENT
     
     String1         DB      "It is our first string ",13,10,'$' 
     LENGTH_STRING1  EQU     23 
     String2         DB      "It is second string",13,10,'$'    
     LENGTH_STRING2  EQU     25 
     String3         DB      LENGTH_STRING1 + LENGTH_STRING2 DUP (?), 13, 10, '$'
     
     Data            ENDS
     
     Code             SEGMENT
     
                     ASSUME   CS:Code, DS:Data, SS:Bundle
     
     Start:
                     mov     ax, SEG Data               
                     mov     ds, ax
                    
  21                 mov     cx, LENGTH_STRING1         
  22                 mov     si, OFFSET String1     
  23                 mov     di, OFFSET String3     
  24               LOOP1:
  25                 mov     dl, [si]
  26                 mov     [di], dl
  27                 inc     si
  28                 inc     di
  29                 loop    LOOP1
  30                
  31                 mov     cx, LENGTH_STRING2         
  32                 mov     si, OFFSET String2
  33                LOOP2:
  34                 mov     dl, [si]               
  35                 mov     [di], dl             
  36                 inc     si
  37                 inc     di
  38                 loop    LOOP2
  39  
  40                 mov     ah, 09h                    
  41                 mov     dx, OFFSET String3     
  42                 int     21h
     
                     mov     ax, 4C00h              
                     int     21h
     
     Code         ENDS
     
     Bundle         SEGMENT STACK
     
                     DB      100h DUP (?)
     
     Bundle             ENDS
     
                     END Start

标签: assemblyconcatenationdosx86-16

解决方案


推荐阅读