在微机原理中,8086汇编语言中 00H和0000H有什么区别啊,如果表示的是数,是不是它们字长不一样?

如题所述

00H是8位数据
0000H是16位数据
所以00H与0000H他们所表示的数的位是不一样的,位不一样代表着他们所能表示的数据的大小范围是不一样的
如果表示成数,他们的字长是不一样的,在8086中,二个字节表示一个字,
所以00H是一个字节
而0000H是一个字
PS:若有不明白的地方,可以追问追问

MOV AX, 8000H
MOV DS, AX
AA0: MOV SI, 0000H
MOV CX, 0010H
MOV AX, 0000H
AA1: MOV [SI], AX
INC AL
INC SI
INC SI
LOOP AA1
这个程序片段,将16个数写入从80000H开始的连续地址单元,现在把它改写成字节写入存储器和非规则字写入存储器,改哪些地方啊、、

追答

非规则字不知道是什么,不好意思了

MOV AX, 8000H
MOV DS, AX
AA0: MOV SI, 0000H
MOV CX, 0010H
MOV AX, 0000H
AA1: MOV [SI], AL //这里关键,我将一个字节给[si]
INC AL
INC SI ;si就加1,就行了,指向下一个字节的地址
LOOP AA1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-06
编译器编译的时候是看你使用的寄存器的位数,来区别数字的位数的。
使用AX,则看待为16;使用AL则看待为8为;
根据你的追问:
字节传送则使用AL;
mov [si],al
如果是传送到某个地址;
你可以使用这条指令;
mov byte ptr[si],8data 以字节传送

mov word ptr[si],16data 以字传送
相似回答