From 372364971c63a0ce2411a9822db6349b527b2016 Mon Sep 17 00:00:00 2001 From: Hane Date: Tue, 27 Jan 2026 15:45:42 +0100 Subject: [PATCH] 1-2 challenge solved (only impl in RM_TF_R) --- 1-2/8086coded | Bin 29216 -> 29488 bytes 1-2/decoder.c | 81 ++++++++++++++++++++++++++------------------- 1-2/listing-39.asm | 3 +- 1-2/listing-40 | Bin 39 -> 49 bytes 1-2/listing-40.asm | 7 ++-- 1-2/output | Bin 41 -> 49 bytes 1-2/output.asm | 30 ++++++++--------- 7 files changed, 68 insertions(+), 53 deletions(-) diff --git a/1-2/8086coded b/1-2/8086coded index e6816394b480c626ef0e9b6e6a182232000556b3..3bb58a10b20b5a12aa866184ebed33991a53e295 100755 GIT binary patch delta 7623 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 delta 7414 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 I{n?EF1rs*RBLDyZ diff --git a/1-2/decoder.c b/1-2/decoder.c index 821731d..7b800e6 100644 --- a/1-2/decoder.c +++ b/1-2/decoder.c @@ -63,7 +63,7 @@ char WORD_SIGNAL_TXT[0b10][WORD_SIGNAL_LEN] = { "byte ", "word " }; typedef struct { FILE *binary; - uint64_t size; + uint64_t size; } binary_data; FILE *output; @@ -160,9 +160,19 @@ void fill_ea_string(output_string *str, char* content, int16_t displacement) { if (strlen(content) > 0) { - memcpy(str->string, " + ", 3); - str->string += 3; - str->len += 3; + *(str->string) = ' '; + if(displacement >= 0) + { + *(str->string + 1) = '+'; + *(str->string + 2) = ' '; + str->string += 3; + str->len += 3; + } + else + { + str->string += 1; + str->len += 1; + } } disp_len = sprintf(str->string, "%d", displacement); str->string += disp_len; @@ -296,11 +306,23 @@ int MOV_I_T_RM_parse(uint8_t byte1, uint8_t byte2, binary_data *binary, int byte fprintf(output, "%s %s, %s%d\n", "mov", mem_data.string, WORD_SIGNAL_TXT[is_wide], wide_data); break; } - return extra_bytes_read; } +int16_t calc_effective_disp(uint8_t high_order, uint8_t low_order) +{ + const uint8_t low_order_neg_mask = 0b1000'0000; + int16_t effective_disp = 0; + + if (high_order == 0 & ((low_order & low_order_neg_mask) >> 7)) + high_order = high_order | 0b1111'1111; + int8_t *effective_disp_high_order =(int8_t*) &(effective_disp) + 1; + memcpy(&(effective_disp), &low_order, 1); + memcpy(effective_disp_high_order, &high_order, 1); + return effective_disp; +} + int MOV_RM_TF_R_parse(uint8_t byte1, uint8_t byte2, binary_data *binary, int bytes_read) { const uint8_t wide_mask = 0b0000'0001; @@ -312,8 +334,13 @@ int MOV_RM_TF_R_parse(uint8_t byte1, uint8_t byte2, binary_data *binary, int byt uint8_t low_disp = 0; uint8_t high_disp = 0; uint16_t wide_disp = 0; + int16_t effective_disp = 0; uint8_t extra_bytes_read = 0; + output_string mem_data; + mem_data.len = 0; + mem_data.string = calloc(18, sizeof(char)); //"[bp + di + 65535]\0" + bool reg_is_dest = (byte1 & dest_mask); uint8_t inst_mod = (byte2 & mod_mask) >> 6; @@ -342,28 +369,22 @@ int MOV_RM_TF_R_parse(uint8_t byte1, uint8_t byte2, binary_data *binary, int byt fread(byte, sizeof(byte), 1, bin.binary); extra_bytes_read++; low_disp = (uint8_t)byte[0]; + reg_value = ((byte2 & regm_mask) >> 3) + ((byte1 & wide_mask) * 8); ea_table_value = (byte2 & (regm_mask >> 3)); - + effective_disp = calc_effective_disp(0, low_disp); + //EA STRING GENERATION - *ea_string_write_ptr = '['; - ea_string_write_ptr++; - memcpy(ea_string_write_ptr, EA_ENCODING_TXT[ea_table_value], strlen(EA_ENCODING_TXT[ea_table_value])); - ea_string_write_ptr += strlen(EA_ENCODING_TXT[ea_table_value]); - memcpy(ea_string_write_ptr, " + ", 3); - ea_string_write_ptr += 3; - disp_len = sprintf(ea_string_write_ptr, "%d", low_disp); - ea_string_write_ptr += disp_len; - *ea_string_write_ptr = ']'; + fill_ea_string(&mem_data, EA_ENCODING_TXT[ea_table_value], effective_disp); //END printf("%s %s, %s\n", "mov", (reg_is_dest ? REG_ENCODING_TXT[reg_value] - : ea_string) - , (reg_is_dest ? ea_string + : mem_data.string) + , (reg_is_dest ? mem_data.string : REG_ENCODING_TXT[reg_value])); fprintf(output, "%s %s, %s\n", "mov", (reg_is_dest ? REG_ENCODING_TXT[reg_value] - : ea_string) - , (reg_is_dest ? ea_string + : mem_data.string) + , (reg_is_dest ? mem_data.string : REG_ENCODING_TXT[reg_value])); break; case (MEM_16BIT_DISP): @@ -375,30 +396,22 @@ int MOV_RM_TF_R_parse(uint8_t byte1, uint8_t byte2, binary_data *binary, int byt high_disp = (uint8_t)byte[0]; //Composing wide displacement - wide_disp = high_disp << 8; - wide_disp = wide_disp | low_disp; + effective_disp = calc_effective_disp(high_disp, low_disp); + reg_value = ((byte2 & regm_mask) >> 3) + ((byte1 & wide_mask) * 8); ea_table_value = (byte2 & (regm_mask >> 3)); //EA STRING GENERATION - *ea_string_write_ptr = '['; - ea_string_write_ptr++; - memcpy(ea_string_write_ptr, EA_ENCODING_TXT[ea_table_value], strlen(EA_ENCODING_TXT[ea_table_value])); - ea_string_write_ptr += strlen(EA_ENCODING_TXT[ea_table_value]); - memcpy(ea_string_write_ptr, " + ", 3); - ea_string_write_ptr += 3; - disp_len = sprintf(ea_string_write_ptr, "%d", wide_disp); - ea_string_write_ptr += disp_len; - *ea_string_write_ptr = ']'; + fill_ea_string(&mem_data, EA_ENCODING_TXT[ea_table_value], effective_disp); //END printf("%s %s, %s\n", "mov", (reg_is_dest ? REG_ENCODING_TXT[reg_value] - : ea_string) - , (reg_is_dest ? ea_string + : mem_data.string) + , (reg_is_dest ? mem_data.string : REG_ENCODING_TXT[reg_value])); fprintf(output, "%s %s, %s\n", "mov", (reg_is_dest ? REG_ENCODING_TXT[reg_value] - : ea_string) - , (reg_is_dest ? ea_string + : mem_data.string) + , (reg_is_dest ? mem_data.string : REG_ENCODING_TXT[reg_value])); break; case (MEM_NO_DISP): diff --git a/1-2/listing-39.asm b/1-2/listing-39.asm index ecce8c7..58038ce 100644 --- a/1-2/listing-39.asm +++ b/1-2/listing-39.asm @@ -25,7 +25,8 @@ mov ah, [bx + si + 4] ; Source address calculation plus 16-bit displacement mov al, [bx + si + 4999] -; Dest address calculation + ; Dest address calculation + mov [bx + di], cx mov [bp + si], cl mov [bp], ch diff --git a/1-2/listing-40 b/1-2/listing-40 index 63b3ec56fcbcba6dc547e00cc6c39fd843595a02..f74e061ac8093d9597ffefb2e4990dff8e6a842d 100644 GIT binary patch delta 15 WcmY#4p8vp2g#%jwi!KEKiyndvq5BD;5CEh4 H38N1HT3;1m literal 41 xcmeCY*Kuqk&(<$Hc^Gzn`M)cNf7g@`T@2mQ-C+z}2`pU=?ZTa$9b6rG3;@NK61@Nb diff --git a/1-2/output.asm b/1-2/output.asm index 3f42057..266e20c 100644 --- a/1-2/output.asm +++ b/1-2/output.asm @@ -1,18 +1,16 @@ bits 16 -mov si, bx -mov dh, al -mov cl, 12 -mov ch, 244 -mov cx, 12 -mov cx, 65524 -mov dx, 3948 -mov dx, 61588 -mov al, [bx + si] -mov bx, [bp + di] -mov dx, [bp + 0] -mov ah, [bx + si + 4] -mov al, [bx + si + 4999] -mov [bx + di], cx -mov [bp + si], cl -mov [bp + 0], ch +mov ax, [bx -100] +mov ax, [bx -3] +mov ax, [bx + di + 25536] +mov ax, [bx + di -37] +mov [si -300], cx +mov dx, [bx -32] +mov [bp + di], byte 7 +mov [di + 901], word 347 +mov bp, [5] +mov bx, [3458] +mov ax, [2555] +mov ax, [16] +mov [2554], ax +mov [15], ax