diff --git a/compiler/i8086/cgcpu.pas b/compiler/i8086/cgcpu.pas index d6380914db..4718f83437 100644 --- a/compiler/i8086/cgcpu.pas +++ b/compiler/i8086/cgcpu.pas @@ -1154,9 +1154,11 @@ unit cgcpu; case fromsize of OS_8: begin - list.concat(taicpu.op_const_reg(A_MOV, S_W, 0, reg)); reg := makeregsize(list, reg, OS_8); list.concat(taicpu.op_ref_reg(A_MOV, S_B, tmpref, reg)); + setsubreg(reg, R_SUBH); + list.concat(taicpu.op_const_reg(A_MOV, S_B, 0, reg)); + makeregsize(list, reg, OS_16); end; OS_S8: begin @@ -1176,9 +1178,11 @@ unit cgcpu; OS_8: begin list.concat(taicpu.op_const_reg(A_MOV,S_W,0,GetNextReg(reg))); - list.concat(taicpu.op_const_reg(A_MOV, S_W, 0, reg)); reg := makeregsize(list, reg, OS_8); list.concat(taicpu.op_ref_reg(A_MOV, S_B, tmpref, reg)); + setsubreg(reg, R_SUBH); + list.concat(taicpu.op_const_reg(A_MOV, S_B, 0, reg)); + makeregsize(list, reg, OS_16); end; OS_S8: begin @@ -1266,6 +1270,7 @@ unit cgcpu; add_mov(taicpu.op_reg_reg(A_MOV, S_B, reg1, reg2)); setsubreg(reg2,R_SUBH); list.concat(taicpu.op_const_reg(A_MOV, S_B, 0, reg2)); + makeregsize(list, reg2, OS_16); end; OS_S8: begin @@ -1293,6 +1298,7 @@ unit cgcpu; add_mov(taicpu.op_reg_reg(A_MOV, S_B, reg1, reg2)); setsubreg(reg2,R_SUBH); list.concat(taicpu.op_const_reg(A_MOV, S_B, 0, reg2)); + makeregsize(list, reg2, OS_16); end; OS_S8: begin