MOV CX,9 MOV AL,01H MOV SI,1000H NEXT: MOV [SI],AL INC SI SHL AL,1 LOOP NEXT
发布网友
发布时间:2022-08-16 11:04
我来回答
共2个回答
热心网友
时间:2023-10-05 07:23
1、执行本程序后有:AL=0;SI=1009;CX=0;
2、本程序的功能是:每次将al乘2,传送给si所指向的内存单元.
程序注释:
MOV CX,9 ;设置循环次数
MOV AL,01H ;将01送给al寄存器
MOV SI,1000H;将1000h送给si寄存器
NEXT: MOV [SI],AL ;循环的入口点 将al的值送给si的内容所指向的偏移地址
INC SI ;将si内容加一
SHL AL,1 ;逻辑左移一位,作用是将al的值乘2
LOOP NEXT ;循环到next标号处,直到cx=0停止
每一次循环的结果:
0000 0010 位移1次 si所指向偏移地址内容是 2 ,并且 al内容也是2
0000 0100 位移2次 si所指向偏移地址内容是 4 ,并且 al内容也是4
0000 1000 位移3次 si所指向偏移地址内容是 8 ,并且 al内容也是8
0001 0000 位移4次 si所指向偏移地址内容是 16 ,并且 al内容也是16
0010 0000 位移5次 si所指向偏移地址内容是 32 ,并且 al内容也是32
0100 0000 位移6次 si所指向偏移地址内容是 64 ,并且 al内容也是64
1000 0000 位移7次 si所指向偏移地址内容是 128 ,并且 al内容也是128
000 00000 位移8次 si所指向偏移地址内容是 0 ,并且 al内容也是0
000 00000 位移9次 si所指向偏移地址内容是 0 ,并且 al内容也是0
热心网友
时间:2023-10-05 07:24
AL=00h
SI=1009H
CX=0
功能是说明AL为8位寄存器,当第九次再向左移位时,将超出AL所能存放数值的范围,所以1会丢失
热心网友
时间:2023-10-05 07:23
1、执行本程序后有:AL=0;SI=1009;CX=0;
2、本程序的功能是:每次将al乘2,传送给si所指向的内存单元.
程序注释:
MOV CX,9 ;设置循环次数
MOV AL,01H ;将01送给al寄存器
MOV SI,1000H;将1000h送给si寄存器
NEXT: MOV [SI],AL ;循环的入口点 将al的值送给si的内容所指向的偏移地址
INC SI ;将si内容加一
SHL AL,1 ;逻辑左移一位,作用是将al的值乘2
LOOP NEXT ;循环到next标号处,直到cx=0停止
每一次循环的结果:
0000 0010 位移1次 si所指向偏移地址内容是 2 ,并且 al内容也是2
0000 0100 位移2次 si所指向偏移地址内容是 4 ,并且 al内容也是4
0000 1000 位移3次 si所指向偏移地址内容是 8 ,并且 al内容也是8
0001 0000 位移4次 si所指向偏移地址内容是 16 ,并且 al内容也是16
0010 0000 位移5次 si所指向偏移地址内容是 32 ,并且 al内容也是32
0100 0000 位移6次 si所指向偏移地址内容是 64 ,并且 al内容也是64
1000 0000 位移7次 si所指向偏移地址内容是 128 ,并且 al内容也是128
000 00000 位移8次 si所指向偏移地址内容是 0 ,并且 al内容也是0
000 00000 位移9次 si所指向偏移地址内容是 0 ,并且 al内容也是0
热心网友
时间:2023-10-05 07:24
AL=00h
SI=1009H
CX=0
功能是说明AL为8位寄存器,当第九次再向左移位时,将超出AL所能存放数值的范围,所以1会丢失