首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >程序集将数字转换为字符

程序集将数字转换为字符
EN

Stack Overflow用户
提问于 2016-01-02 17:54:42
回答 1查看 2.8K关注 0票数 1

我有一个变量:

代码语言:javascript
运行
复制
Message DB 10 dup(?)

我试图生成10个随机字符,然后将它们保存到变量中。

代码语言:javascript
运行
复制
mov ecx,10
mov edi,0

GenerateString:
    mov eax,60h
    call RandomRange
    sub eax,27
    add al,'0'
    mov Message[edi],al

    inc edi
    loop GenerateString

mov edx,offset Message
call WriteString

我在某个地方发现,我必须减去数字27并添加ascii 0,但它不能正常工作。请注意,我必须使用RandomRange。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-02 19:00:40

欧文的RandomRange在0..EAX-1范围内创建数字.换句话说:在一定数量的不同数字范围内得到一个数字。由于您希望在范围a..z (97.122)内有一个ASCII字符,所以您有

  • 要确定范围的大小: 122-97+1 =26个字符,
  • 通过添加开始值: 97将RandomRange的范围移动到所需的范围。

顺便说一句:如果不使用RandomRange初始化Randomize,则始终会得到相同的序列。

代码语言:javascript
运行
复制
INCLUDE Irvine32.inc

.DATA
    Message DB 10 dup(0)

.CODE
main PROC

    call Randomize                      ; Initialization for `RandomRange`

    mov ecx, LENGTHOF Message - 1       ; Without the terminating null!
    mov edi, 0

    GenerateString:

    mov eax, 26                         ; Range: [0..25] = 26 numbers
    call RandomRange
    add eax, 97                         ; Move the range from [0..25] to [97..122]
    mov Message[edi],al

    inc edi
    loop GenerateString

    mov edx,offset Message
    call WriteString

    exit

main ENDP

END main
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34568905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档