MEGAImagine 发表于 2021-7-22 17:05

汇编语言loop和[bx]的联合应用问题【已解决】

本帖最后由 MEGAImagine 于 2021-7-23 20:10 编辑

在学习汇编语言时,看到王爽老师汇编语言的loop与的联合运用的时候有一点想不通,王爽老师先是说不能将ffff:0~ffff:b的数据累加到dl中,并设置(dh)=0实现累加到dx中,害怕会遇到进位丢失,但是后面的联合运用中却是image.png ,这样的话不也是将加入dl中吗,如果遇到进位不会被后面的
mov ah,0给覆盖掉吗这不就和之前说的不能的情况一样吗,还是说mov ah,0就是不对ah做操作的意思,但是为什么要写这一个代码出来呢?求各位大佬能给我解惑

internetidis 发表于 2021-7-22 20:11

相加的时候使用了 16位的寄存器,并把相加的结果放进了 dx中,mov ah,0 不会影响到 dx中的结果

MEGAImagine 发表于 2021-7-23 12:39

internetidis 发表于 2021-7-22 20:11
相加的时候使用了 16位的寄存器,并把相加的结果放进了 dx中,mov ah,0 不会影响到 dx中的结果

但是万一它的低位加上去超过了一个字节进位到高位的话mov ah,0会把他高位给覆盖成0吗如果不会的话,为什么要加着一句呢?是为了提醒cpu要使用高位可能进位吗?

internetidis 发表于 2021-7-23 14:31

本帖最后由 internetidis 于 2021-7-23 14:38 编辑

add dx,ax 相加的结果存进了 dx中,你的mov ah,0怎么就影响到低位了呢?要明白 ax 在这里充当一个中转的角色,mov al,是为了 读取内存中一个字节到al寄存器中,因为是一个字节,不可能 add dx,al 中吧,只能 先mov ah,0[保证数据的准确性,避免影响后面的add指令]   然后再 add dx, ax 。最终的结果就保存在dx中。ax只是起了中转的作用。add dx,ax 怎么加都没事,因为是只有12个字节,结果都不会超过65535

MEGAImagine 发表于 2021-7-23 20:09

internetidis 发表于 2021-7-23 14:31
add dx,ax 相加的结果存进了 dx中,你的mov ah,0怎么就影响到低位了呢?要明白 ax 在这里充当一个中转的角 ...

噢噢,谢谢!我明白了!他是每一个单独给ax然后加到dx,我理解错代码意思了,我以为是先加到ax加完,才让ax加在dx上,十分感谢
页: [1]
查看完整版本: 汇编语言loop和[bx]的联合应用问题【已解决】