在Assembly 8086中增加数组中的计数

时间:2013-05-15 18:13:57

标签: arrays assembly count x86-16 counting

freq dw 512 dup(0)
lea si, freq

;Now if I move a char 'a' into al and then do:

mov [si], al  

将字母“a”放入数组的第一个位置吗? 我试图将与'a'对应的ASCII数增加1,因此在数组freq +1的97行。如何更改代码才能执行此操作?

*基本上我试图使用一个数组来存储我在浏览文件时遇到的所有字符的频率计数

1 个答案:

答案 0 :(得分:0)

  

会将字母“a”放入数组的第一个位置吗?

是(实际上在第一个元素的低位字节,因为freq是一个单词数组)。

  

我正在尝试将与'a'对应的ASCII数字增加1,因此在数组freq +1中的97行。

mov bx,'a'*2
inc word ptr [bx+si]

或者如果你有al中的角色:

xor bh,bh   ; clear bh
mov bl,al
add bx,bx   ; scale index by 2
inc word ptr [bx+si]

如果允许使用80386说明,则可以将xor bh,bhmov bl,al替换为movzx bx,al