Ассемблерная вставка для ввода с клавиатуры значения переменной - C (СИ)
Формулировка задачи:
Нужен пример программы на си, в которой ввод с клавиатуры строки в переменную производится с помощью ассемблерной вставки
Решение задачи: «Ассемблерная вставка для ввода с клавиатуры значения переменной»
textual
Листинг программы
int cgetse(char far *s, int len) { __asm{ les di, s mov cx, len l: xor ax,ax int 16h cmp ah, 1Ch jz ex stosb mov ah, 0Eh xor bx, bx int 10h loop l ex: xor al,al stosb ; calc length mov ax, len sub ax, cx }; };
Объяснение кода листинга программы
В этом коде:
les di, s
— помещает в регистр DI адрес строки, которую необходимо считать.mov cx, len
— переменной CX присваивается значение длины строки.xor ax,ax
— АХ обнуляется.int 16h
— происходит ввод с клавиатуры значения, которое будет сохранено в регистре АХ.cmp ah, 1Ch
— происходит сравнение с кодом завершения ввода. Если он равен 1Сh, то происходит переход к меткеex
.stosb
— байт из регистра АХ записывается в буфер.mov ah, 0Eh
— регистру АХ присваивается код функции вывода символа.xor bx, bx
— обнуление регистра BX.int 10h
— происходит вывод символа.loop l
— происходит переход к меткеl
.xor al,al
— обнуление регистра AL.stosb
— байт из регистра AL записывается в буфер.mov ax, len
— регистру АХ присваивается значение переменной len.sub ax, cx
— вычисляется длина введенной строки.- Код после
}
выполняет вычисления и использует значения переменных, которые не представлены в данном списке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д