Объясните почему не правильно! - Assembler

Узнай цену своей работы

Формулировка задачи:

Я новичок в ассемблере, по этому прошу помощи... Суть моей программы, я ввожу строку, консоль выводит число, но выводится всякая пакость... Объясните почему Пишу в MASMе...
.386
.model flat, stdcall
option casemap:none
 
include c:\masm32\include\kernel32.inc
include c:\masm32\include\user32.inc
include c:\masm32\include\windows.inc
 
includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\shell32.lib
 
Bsize equ 20
 
.data
 
cWriten dd ?
cRead dd ?
text db "Enter number", 0
buf dd Bsize dup(?)
stdout dd ?
stdin dd ?
FOR_PLUS db 256  dup(0)
STR_SHABLON db '%d'
NumberWrite db ?
 
.code
 
start:
invoke AllocConsole
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov stdout, eax
invoke GetStdHandle, STD_INPUT_HANDLE
mov stdin, eax
 
invoke WriteConsoleA, stdout, ADDR text, sizeof text, ADDR cWriten, 0
invoke ReadConsole,stdin,ADDR buf,Bsize,ADDR cRead,NULL
 
xor eAx, eAx

lea edx, buf
sub cRead, 2
mov ecx, cRead
mov bl, 10

metka:
 
mul bl
mov dl, [edx]
sub dl, 48
add al, dl
inc edx
loop metka
 
mov NumberWrite, al
invoke wsprintf, addr FOR_PLUS, addr STR_SHABLON, NumberWrite

invoke WriteConsoleA, stdout, ADDR FOR_PLUS, sizeof FOR_PLUS, ADDR cWriten, 0

invoke Sleep,100000
invoke ExitProcess, NULL
end start

Решение задачи: «Объясните почему не правильно!»

textual
Листинг программы
movzx dx, byte ptr [edi]

Объяснение кода листинга программы

  1. Команда movzx используется для перемещения значения из памяти в регистр с расширением байта в слово.
  2. dx - это регистр, который используется для хранения значения, перемещенного из памяти.
  3. edi - это регистр, который используется как индекс для доступа к памяти.
  4. byte ptr [edi] - это адрес памяти, который используется в команде movzx. Он указывает на байт памяти, который должен быть перемещен в регистр dx.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы