From ab2b107e7ea73739e15bc8814731f9eecaa2ecba Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sat, 22 Mar 2025 15:09:00 +0700 Subject: [PATCH] Listing 53 --- asm_files/list-0053.asm | 35 +++++++++++++++++++++++++++++++++++ asm_files/list-0053.txt | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 asm_files/list-0053.asm create mode 100644 asm_files/list-0053.txt diff --git a/asm_files/list-0053.asm b/asm_files/list-0053.asm new file mode 100644 index 0000000..f1ec802 --- /dev/null +++ b/asm_files/list-0053.asm @@ -0,0 +1,35 @@ +; ======================================================================== +; +; (C) Copyright 2023 by Molly Rocket, Inc., All Rights Reserved. +; +; This software is provided 'as-is', without any express or implied +; warranty. In no event will the authors be held liable for any damages +; arising from the use of this software. +; +; Please see https://computerenhance.com for further information +; +; ======================================================================== + +; ======================================================================== +; LISTING 53 +; ======================================================================== + +bits 16 + +mov dx, 6 +mov bp, 1000 + +mov si, 0 +init_loop_start: + mov word [bp + si], si + add si, 2 + cmp si, dx + jnz init_loop_start + +mov bx, 0 +mov si, dx +sub bp, 2 +add_loop_start: + add bx, word [bp + si] + sub si, 2 + jnz add_loop_start diff --git a/asm_files/list-0053.txt b/asm_files/list-0053.txt new file mode 100644 index 0000000..f3fa29e --- /dev/null +++ b/asm_files/list-0053.txt @@ -0,0 +1,35 @@ +--- test\listing_0053_add_loop_challenge execution --- +mov dx, 6 ; dx:0x0->0x6 ip:0x0->0x3 +mov bp, 1000 ; bp:0x0->0x3e8 ip:0x3->0x6 +mov si, 0 ; ip:0x6->0x9 +mov word [bp+si], si ; ip:0x9->0xb +add si, 2 ; si:0x0->0x2 ip:0xb->0xe +cmp si, dx ; ip:0xe->0x10 flags:->CPAS +jne $-7 ; ip:0x10->0x9 +mov word [bp+si], si ; ip:0x9->0xb +add si, 2 ; si:0x2->0x4 ip:0xb->0xe flags:CPAS-> +cmp si, dx ; ip:0xe->0x10 flags:->CAS +jne $-7 ; ip:0x10->0x9 +mov word [bp+si], si ; ip:0x9->0xb +add si, 2 ; si:0x4->0x6 ip:0xb->0xe flags:CAS->P +cmp si, dx ; ip:0xe->0x10 flags:P->PZ +jne $-7 ; ip:0x10->0x12 +mov bx, 0 ; ip:0x12->0x15 +mov si, dx ; ip:0x15->0x17 +sub bp, 2 ; bp:0x3e8->0x3e6 ip:0x17->0x1a flags:PZ-> +add bx, [bp+si] ; bx:0x0->0x4 ip:0x1a->0x1c +sub si, 2 ; si:0x6->0x4 ip:0x1c->0x1f +jne $-5 ; ip:0x1f->0x1a +add bx, [bp+si] ; bx:0x4->0x6 ip:0x1a->0x1c flags:->P +sub si, 2 ; si:0x4->0x2 ip:0x1c->0x1f flags:P-> +jne $-5 ; ip:0x1f->0x1a +add bx, [bp+si] ; ip:0x1a->0x1c flags:->P +sub si, 2 ; si:0x2->0x0 ip:0x1c->0x1f flags:P->PZ +jne $-5 ; ip:0x1f->0x21 + +Final registers: + bx: 0x0006 (6) + dx: 0x0006 (6) + bp: 0x03e6 (998) + ip: 0x0021 (33) + flags: PZ