接受一个字符串并在汇编中显示其长度

糖果
print macro msg
lea dx, msg
mov ah, 09h
int 21h
endm

data segment
msg1        db  13, 10, 10, 'Enter the string: $'
msg2        db  13, 10, 10, 'The entered string is: $'
msg3        db  13, 10, 10, 'The length of the string is: $'
array       db  20 dup(0)
lenstr      db  5   dup(0)
data ends

code segment
assume cs: code, ds: data
start:      mov ax, data
    mov ds, ax
    
    print msg1
    lea si, array

这是一个 ALP,用于接受来自键盘的字符串并显示其长度。有很多部分我不明白该程序是如何工作的。

read:       mov ah, 01h
int 21h
cmp al, 0dh
je next
mov [si], al
inc si
inc bl
jmp read

在这里,为什么我们要比较 al,0dh,当 al 开始时不包含任何值?因此,如果有人可以解释整个程序,那将非常有帮助。

next:       mov al, '$'
mov [si], al
print msg2
print array
print msg3
lea si, lenstr

xor ax, ax
mov al, bl
mov bl, 10
div bl
add al, 30h
mov [si], al
inc di
add ah, 30h
mov [si], ah
inc si
mov al, '$'
mov [si], al
print lenstr
mov ax, 4c00h
int 21h
code ends
end start

另外,我们不能只用于count db $-array查找字符串的长度吗?

维特软件
read: mov ah, 01h  ; Identification of DOS service.
int 21h            ; Invokation of the service.  
cmp al, 0dh
je next
mov [si], al
inc si
inc bl
jmp read

DOS service Int 21h/AH=01h等待直到用户按下一个键,例如数字5AL=35h在这种情况下它返回当 s|he 按Enter 键(表示字符串结束)时,服务返回AL=0Dh

为什么我们要比较 al,0dh,当 al 开始时不包含任何值?

你最好问一下,bl当我们不知道之前有什么时,我们为什么要递增我们不能相信寄存器在我们的程序开始时包含 0(您中的一些人确实如此)。显然bl是为了计算输入的字符数。

另外,我们不能只使用 count db $-array 来查找字符串的长度吗?

仅当字符串在程序中静态定义时。我们不知道用户要输入多少个字符,因此我们必须在运行时动态计算它们。在宏中使用的 DOS 服务Int 21h/AH=09h要求在最后输入的字符后
插入$print

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

字符串长度多显示一个字符 - ruby

显示多个字符串列表中的一个字符串

如何在另一个字符串中查找长度可变的字符串

在句子中找到一个字符串并更改字符串的颜色并在 tkinter 标签 python 中显示

显示字符串的第一个字符,并在其后添加“ ...”

在反应中显示一个字符串

在汇编时反写一个字符串输入

如何将数组中的字符串连接为一个字符串并在控制台中显示?

在vim中,我想找到一个字符串,并在字符串的每个字符之间插入空格

用ARM汇编语言编写一个函数,该函数将一个字符串插入到特定位置的另一个字符串中

搜索一百万个字符串中的一个字符

尝试查找非标准长度字符串中的最后一个字符

C-复制未知长度字符串中的最后一个字符

仅显示最后一个字符串的字符串数组

当我增加一个字符,并在Java中的字符串这是怎么回事?

检测字符串中的换行符并在其前面添加一个字符

将数字转换为字符串并在Oracle中添加一个字符

计算C中一个字符串中n个长度字的出现次数

Swift:从字符串中删除最后一个字符是其反斜杠

迅捷:方法不知道它接受一个字符串

查找一个字符串,并在找到第一个字符串后替换另一个字符串

计算一个字符串在另一个字符串中每个字符的出现次数

汇编:用另一个字符串替换子字符串

如何将一个字符串与另一个字符串匹配并为其返回 true?

如何找到一个字符串的长度

从函数接收一个字符串数组并找出它的长度

Javascript从?数组的长度构建一个字符串,

strtok 返回零,长度为一个字符串

如何计算将在Python中打印的下一个字符串的长度?