8086指令 cbw 但数据大小并没有改变?

来源:百度知道 编辑:UC知道 时间:2024/06/01 11:50:59
mov al ,81h ;al=81h
cbw ;ax=ff81h
a开始=81H=-1H
a后来=-7F81H
数据大小不就变了么??

cbw是符号扩展指令,对al中的内容进行符号扩展,如果al的最高有效位为0,则ah=0,如al最高有效位为1,则ah=0ffh,其实数的大小并没有变化,当al为正数时,ah=0,大小为变;当al为负数时,ah=0ffh,大小仍然未变,例如,-2=11111110,符号扩展后=11111111 11111110,因为其是补码,转换成原码仍然是-2.

应该的这样的理解。首先你的81H,如果是有符号数的话,那就是十进制的负1,那么他的ah=ffh,ax=ff81h,因为cbw是符号的扩展指令,那么还是-1;如果ah是无符号数的话,那就al是正的81h,扩展之后是ah=00h,那么ax=0081h。所以,没有任何的变化,只是一个符号多写几次。大小是不会改变的