【问题标题】:print string result in assembly在汇编中打印字符串结果
【发布时间】:2011-12-10 20:08:54
【问题描述】:
; multi-segment executable file template.

data segment
   string db "THis is LuxUR in Summer."  
ends

stack segment
    dw   128  dup(0)
ends

code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax

  mov bx, offset string
  mov al, 0 ;      lower letters in word 
  mov dl,0  ; maximum letters

check:
mov cl, 41h ; from A-Z
mov ch, 5Ah   

mov ah, [bx]  
cmp ah, "."
je dot
cmp ah, " "
je empty 
jne letters

letters:   
cmp ah, cl 
je uppercase
inc cl
cmp cl, ch 
jne letters

mov cl, 61h     ; a-z
mov ch, 7Ah

lowercase: 
inc al
cmp dl,al 
jl maksimum

inc bx
jmp check

maksimum:
mov dl, al

inc bx
jmp check

uppercase:  
inc bx
jmp check    

empty:
mov al, 0
inc bx
jmp check

dot: 

我的程序计算 al 中单词中的小写字母。然后放入dl。 (最多小写) 我有名称为点的标签。在那里我必须放一些指令,我可以通过它打印我的结果:

Summer 是小写字母 5 最多的单词

我尝试了一些指令来做到这一点,但它不起作用。

【问题讨论】:

  • 当你说它不起作用时,你得到 any 输出吗?如果有,你会得到什么?
  • 我的结果在dl寄存器中,是5,
  • 所以你得到了正确的结果,但你只是在问如何打印它?是否允许使用 DOS 中断?
  • 我想打印那个数字 (5) 和 Summer 这个词,因为它是小写字母最多的词。我不知道要使用哪个指令,在屏幕上打印
  • 是的,这是我的问题,如何打印 5 和 Summer

标签: string assembly printing


【解决方案1】:

如果您使用的是 Windows,最简单的方法是使用 DOS Interrupts。具体来说,试试interrupt 09。这需要一个字符串并将其输出到标准输出。

【讨论】:

  • LEA DX, string MOV AH, 9 INT 21H 我尝试使用此中断,但我只在屏幕上打印字符串(所有句子都包含所有单词)我只想打印结果 Summer 5字母
  • 听起来你在打印输入,而不是输出。请记住,您需要在打印前格式化输出。
  • 我不知道要使用哪个中断来打印 2 个结果,一个是字符串 Summer 和字母的数量 5,它的示例代码对我来说更容易理解
  • 我真的打印输入,我不明白如何打印我的输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
相关资源
最近更新 更多