Как переносить информацию из 8битного регистра в 16битный - Assembler
Формулировка задачи:
если перенейсти в bx значение 10, не поменяется ли от этого значение в bh?
как вообще переносить из 8битного регистра инфу в 16битный? ибо действия умножения и деления производятся только с 16 битнымы регистрами.
можно ли это сделать подобным образом, специально создав для жтого массив?
outputt db 10 dup(0)
mov si, offset outputt + 9 ; mov [si], bl mov ax, [si]
Решение задачи: «Как переносить информацию из 8битного регистра в 16битный»
textual
Листинг программы
; Programa: Nr. 10 ; UЕѕduoties sД…lyga: ParaЕЎykite programД…, kuri ДЇveda eilutД™ ЕѕodЕѕiЕі, atskirtЕі tarpais ir atspausdina ЕЎiЕі ЕѕodЕѕiЕі ilgius. Pvz.: ДЇvedus asd fghas asd turi atspausdinti 3 5 3 ; Atliko: .model small .stack 100h .data request db 'Programa skaiciuoja kiek simboliu kiekviename zodyje', 0Dh, 0Ah, 'Iveskite simboliu eilute:', 0Dh, 0Ah, '$' ; error_len db 'Ivesti galite ne daugiau 5 simboliu $' result db 0Dh, 0Ah, 'Rezultatas:', 0Dh, 0Ah, '$' buffer db 100, ?, 100 dup (0) output db 10 dup(0) outputt db 10 dup(0) .code start: MOV ax, @data ; perkelti data i registra ax MOV ds, ax ; perkelti ax (data) i data segmenta mov si, offset output + 10 ; si nurodyti б eilutлs paskutinб simbolб mov byte ptr [si], '$' ; бkelti ten pabaigos simbolб ; Isvesti uzklausa MOV ah, 09h MOV dx, offset request int 21h ; skaityti eilute MOV dx, offset buffer ; skaityti i buffer offseta MOV ah, 0Ah ; eilutes skaitymo subprograma INT 21h ; dos'o INTeruptas ; isvesti: rezultatas MOV ah, 09h MOV dx, offset result int 21h mov bl, "0" ; f-ja ;mov si, offset buffer + 100 ; si nurodyti б eilutлs paskutinб simbolб ;mov byte ptr [si], '$' ; бkelti ten pabaigos simbolб abc: MOV si, offset buffer ; priskirti source index'ui bufferio koordinates INC si ; pridedam 1 prie si , nes pirmas kiek simboliu ish viso MOV bh, [si] ; idedam i bh kiek simboliu is viso INC si ; pereiname prie pacio simbolio char: LODSB ; imti is es:si stringo dali ir dedame i al CMP al, 20h ; lyginti, ar simbolis yra tarpas jne toliau jmp toliau: inc bl ; skaitliukas bl dec bh ; atimti 1 is eilutes simboliu kiekio jei bh = 0 , programa baigia darba ;kitaip sokti link kito simbolio jz asc2 jmp char asc2: mov si, offset outputt + 9 ; si nurodyti б eilutлs paskutinб simbolб mov [si], bl mov ax, [si] mov dx, 0 ; iрvalyti dx, nes иia bus liekana po div div bx ; div ax/bx, ir liekana padedama dx add dx, '0' ; pridлti 48, kad paruoрti simbolб iрvedimui mov si, offset output + 10 ; si nurodyti б eilutлs paskutinб simbolб dec si ; sumaюinti si - иia bus padлtas skaitmuo mov [si], dl ; padлti skaitmenб cmp ax, 0 ; jei jau skaiиius iрdalintas jz print ; tai eiti б pabaigа jmp asc2 ; kitu atveju imti kitа skaitmenб print: mov ah, 9 ; atspausdinti skaitmenis mov dx, si int 21h ending: MOV ax, 4c00h ; griztame dos'a INT 21h ; dos'o INTeruptas end start