【发布时间】:2015-10-22 16:58:48
【问题描述】:
定义一个包含十个 16 位字的数组。从键盘读取包含任何字符的字符串的值。之后,应转换字符串,使其仅保留为小写字母的元素 (a - z)。
然后,将字符串打印在屏幕上,并将修改后的序列的元素个数存入寄存器CX。
这是我的代码:
data segment
array dw 10 dup (?)
i db ?
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov i, 0d
mov bx, 0h
insert: ;inserting elements in array work only for db, but i need to work for dw
mov ah, 01h
int 21h
mov array [bx], al
inc bx
inc i
cmp i,4d
JNE insert
mov bx, 0h
mov cl, i
go: ; loop for finding numbers or same character who are not lowercase letters, deleting,
; and moving lowercase letters on their positions
mov ax, array[bx]
cmp ax, 97d
jl notchar
cmp ax, 97d
jg notchar
loop go
mov ax, 4c00h
int 21h
ends
end start
我的问题是,dw 不能正常工作。有人可以帮帮我吗?
【问题讨论】:
-
Google 的你的朋友。首先发布您的代码。
-
我在我的问题中发布我的代码帮助我...请
-
究竟是什么不起作用?你怎么知道它不起作用?你是什么意思它不适用于
dw? -
当我从键盘插入一个字符时,因为 dw 是 2bytes 我可以把它写在 [bx] 中。该指令仅适用于 db ( mov array [bx], al ),如果我定义数组 db 10,我想将 dw 保存在数组 no db 中,但数组 dw 10 不起作用,emu8086 给我一个错误
标签: arrays assembly x86 x86-16 emu8086