User Tag List

Показано с 1 по 10 из 79

Тема: Специалист: программирование на ассемблере

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    07.05.2015
    Адрес
    г. Ульяновск
    Сообщений
    352
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    63
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сейчас пишу компилятор С-- - подобного языка для 8080/8085. И заодно декомпилятор в него.
    Хочется получить возможности ассемблера при Си-подобном синтаксисе.
    Под спойлером - результат прогона декомпилятора для одного тетриса (tetris6.gam) под 86РК

    Скрытый текст


    Код:
    extern proc biosReadKeyboard() absolute 0xF803
    extern proc biosPrintChar(chr: C) absolute 0xF809
    extern proc biosPrintMessage(msg: HL) absolute 0xF818
    extern proc biosCheckKeyboard() absolute 0xF81B	; Ввод кода нажатой клавиши (A=0FFH - не нажата, A=0FEH - РУС/ЛАТ, ИНАЧЕ - код клавиши)
    extern proc biosWarmBoot() absolute 0xF86C
    
    
    var byte_1300: byte absolute 0x1300
    var byte_1301: byte absolute 0x1301
    var byte_1302: byte absolute 0x1302
    var byte_1303: byte absolute 0x1303
    var word_1305: word absolute 0x1305
    var word_1307: word absolute 0x1307
    var word_1309: word absolute 0x1309
    var byte_130B: byte absolute 0x130B
    var byte_130C: byte absolute 0x130C
    var byte_130D: byte absolute 0x130D
    var byte_130E: byte absolute 0x130E
    var byte_130F: byte absolute 0x130F
    var byte_1310: byte absolute 0x1310
    var byte_1311: byte absolute 0x1311
    var byte_1312: byte absolute 0x1312
    var byte_1313: byte absolute 0x1313
    var byte_1314: byte absolute 0x1314
    var word_1315: word absolute 0x1315
    var byte_1317: byte absolute 0x1317
    var byte_1318: byte absolute 0x1318
    var byte_1319: byte absolute 0x1319
    var word_1320: word absolute 0x1320
    var byte_1322: byte absolute 0x1322
    var byte_1323: byte absolute 0x1323
    var byte_1326: byte absolute 0x1326
    var word_1327: word absolute 0x1327
    var byte_1329: byte absolute 0x1329
    var word_132A: word absolute 0x132A
    var word_132C: word absolute 0x132C
    var byte_132E: byte absolute 0x132E
    var byte_132F: byte absolute 0x132F
    var byte_1338: byte absolute 0x1338
    
    proc start() {
    	SP = 0x75FF
    	DE = 0x03F6
    	CALL	proc_0350
    	byte_132E = A = 0
    	BC = 0x100A
    	CALL	proc_056F
    	word_1305 = HL = 0x0100
    @proc_0019:
    	HL = 0x1330
    	JMP	proc_079D
    }
    
    data_001F:
    byte[] {
    	0x00, 0x4E, 0x00, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x02, 0x00, 0x00, 
    	0x00, 0x04, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x9C, 0x00, 0xB2, 0xFF, 0x4E, 0x00, 0x00, 0x00, 0x04, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x9C, 0x00, 0xB2, 0xFF, 0x4E, 0x00, 0x00, 
    	0x00, 0x4C, 0x00, 0x4E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x02, 0x00, 0xB2, 0xFF, 0x00, 0x00, 0x4C, 0x00, 0x4E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x02, 0x00, 0xB2, 0xFF, 0x00, 
    	0x00, 0x50, 0x00, 0x4E, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x4C, 0x00, 0xFE, 0xFF, 0xB2, 0xFF, 0x00, 0x00, 0x50, 0x00, 0x4E, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x4C, 0x00, 0xFE, 0xFF, 0xB2, 0xFF, 0x00, 
    	0x00, 0x4C, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x50, 0x00, 0x4E, 0x00, 0xB2, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xB4, 0xFF, 0x00, 0x00, 0x4E, 0x00, 0xB0, 0xFF, 0xB2, 0xFF, 0x00, 
    	0x00, 0x50, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0xB4, 0xFF, 0xB2, 0xFF, 0x00, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xB0, 0xFF, 0x00, 0x00, 0x4C, 0x00, 0x4E, 0x00, 0xB2, 0xFF, 0x00, 
    	0x00, 0x4E, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x02, 0x00, 0xB2, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xB2, 0xFF, 0x00, 0x00, 0x4E, 0x00, 0xFE, 0xFF, 0xB2, 0xFF, 0x00, 
    	0x00
    }
    
    proc proc_0100() {
    	word_1307 = HL = 0x7824
    	word_1309 = HL
    	XCHG
    	byte_1319 = A = 0x14
    	byte_1311 = A = 0
    	byte_1312 = A
    	CALL	proc_021F
    	CALL	proc_024A
    	byte_132F = A
    	CALL	proc_021F
    	CALL	proc_025E
    	A = byte_132F
    	CPI	0x2E
    	JNZ	proc_032E
    	HL = 0x7ACE
    	BC = 0x0802
    lbl_0133:
    	M = 0x20
    	HL++
    	B--
    	JNZ	lbl_0133
    	B = 0x08
    	HL = 0x7B1C
    	C--
    	JNZ	lbl_0133
    	A = byte_1317
    	A |= A
    	JNZ	lbl_0153
    	DE = 0x7AD0
    	CALL	proc_0228
    	CALL	proc_025E
    lbl_0153:
    	byte_130D = A = byte_130F
    	byte_130E = A = byte_1310
    	byte_130C = A = 0
    lbl_0163:
    	HL = 0x130D
    	A++
    	CMP	M
    	CZ	proc_017B
    	HL = 0x130E
    	CMP	M
    	CZ	proc_02BF
    	C = 0xFF
    lbl_0174:
    	C--
    	JNZ	lbl_0174
    	JMP	lbl_0163
    }
    
    proc proc_017B() {
    	PUSH	PSW
    	M++
    	A = 0xFF
    	byte_130B = A
    	CALL	biosCheckKeyboard
    	CPI	0xFF
    	JZ	proc_02BD
    	B = A
    	HL = 0x130D
    	A = byte_130F
    	A += M
    	M = A
    	A = B
    	CPI	0x08
    	JZ	proc_01E1
    	CPI	0x18
    	JZ	proc_01EC
    	CPI	0x1A
    	JZ	proc_01F7
    	CPI	0x19
    	JZ	proc_0207
    	HL = word_1307
    	XCHG
    	CALL	proc_021F
    	CALL	proc_027F
    lbl_01B2:
    	CALL	proc_021F
    	HL = 0x004E
    	HL += DE
    	XCHG
    	A = byte_1319
    	A--
    	byte_1319 = A
    	CALL	proc_024A
    	CPI	0x2E
    	JZ	lbl_01B2
    	CALL	proc_021F
    	HL = 0xFFB2
    	HL += DE
    	word_1307 = HL
    	XCHG
    	A = byte_1319
    	A++
    	byte_1319 = A
    	CALL	proc_025E
    	JMP	proc_02BD
    }
    
    proc proc_01E1() {
    	HL = word_1307
    	HL--
    	HL--
    	word_1309 = HL
    	JMP	proc_028C
    }
    
    proc proc_01EC() {
    	HL = word_1307
    	HL++
    	HL++
    	word_1309 = HL
    	JMP	proc_028C
    }
    
    proc proc_01F7() {
    	A = byte_1311
    	A++
    	CPI	0x04
    	JM	lbl_0201
    	A = 0
    lbl_0201:
    	byte_1312 = A
    	JMP	proc_028C
    }
    
    proc proc_0207() {
    	CALL	biosPrintChar(0x07)
    	A = byte_1317
    	A -= 0x04
    	byte_1317 = A
    	JZ	proc_02BD
    	A = 0x04
    	byte_1317 = A
    	JMP	proc_02BD
    }
    
    proc proc_021F() {
    	A = byte_1311
    	byte_1313 = A
    	JMP	proc_0234
    }
    
    proc proc_0228() {
    	A = byte_1300
    	JMP	proc_0237
    }
    
    proc proc_022E() {
    	A = byte_1312
    	byte_1313 = A
    @proc_0234:
    	A = byte_1301
    @proc_0237:
    	RRC
    	RRC
    	RRC
    	A &= 0xE0
    	C = A
    	A = byte_1313
    	RLC
    	RLC
    	RLC
    	A &= 0x1F
    	A += C
    	C = A
    	B = 0
    	RET
    }
    
    proc proc_024A() {
    	A = mem[BC]
    	L = A
    	C++
    	A = mem[BC]
    	H = A
    	C++
    	HL += DE
    	A = M
    	CPI	0x2E
    	RNZ
    	A = C
    	A &= 0x07
    	JNZ	proc_024A
    	A = 0x2E
    	RET
    }
    
    proc proc_025E() {
    	byte_1302 = A = 0x17
    	byte_1303 = A = 0x11
    @proc_0268:
    	L = A = mem[BC]
    	C++
    	H = A = mem[BC]
    	C++
    	HL += DE
    	M = A = byte_1302
    	HL++
    	M = A = byte_1303
    	A = C
    	A &= 0x07
    	JNZ	proc_0268
    	RET
    }
    
    proc proc_027F() {
    	byte_1302 = A = 0x2E
    	byte_1303 = A = 0x20
    	JMP	proc_0268
    }
    
    proc proc_028C() {
    	HL = word_1307
    	XCHG
    	CALL	proc_021F
    	CALL	proc_027F
    	HL = word_1309
    	XCHG
    	CALL	proc_022E
    	CALL	proc_024A
    	CPI	0x2E
    	JNZ	lbl_02B3
    	XCHG
    	word_1307 = HL
    	byte_130B = A = 0
    	byte_1311 = A = byte_1312
    lbl_02B3:
    	CALL	proc_021F
    	HL = word_1307
    	XCHG
    	CALL	proc_025E
    @proc_02BD:
    	POP	PSW
    	RET
    }
    
    proc proc_02BF() {
    	PUSH	PSW
    	A = byte_1310
    	A += M
    	byte_130E = A
    	HL = word_1307
    	XCHG
    	HL = 0x004E
    	HL += DE
    	word_1309 = HL
    	CALL	proc_021F
    	CALL	proc_027F
    	HL = word_1309
    	XCHG
    	A = C
    	A -= 0x08
    	C = A
    	CALL	proc_024A
    	CPI	0x2E
    	JNZ	proc_02FB
    	XCHG
    	word_1307 = HL
    	A = byte_1319
    	A--
    	byte_1319 = A
    @proc_02F3:
    	CALL	proc_021F
    	CALL	proc_025E
    	POP	PSW
    	RET
    }
    
    proc proc_02FB() {
    	A = byte_130B
    	A |= A
    	JNZ	proc_0316
    @proc_0302:
    	HL = word_1307
    	XCHG
    	JMP	proc_02F3
    }
    
    data_0309:
    byte[] {
    	0x2A, 0x07, 0x13, 0xEB, 0xCD, 0x1F, 0x02, 0xCD, 0x7F, 0x02, 0xC3, 0xB3, 0x02
    }
    
    proc proc_0316() {
    	A = byte_130C
    	A |= A
    	JNZ	proc_0324
    	A++
    	byte_130C = A
    	JMP	proc_0302
    }
    
    proc proc_0324() {
    	HL = word_1307
    	XCHG
    	CALL	proc_021F
    	CALL	proc_025E
    @proc_032E:
    	SP = 0x75FF
    	JMP	proc_0836
    }
    
    proc proc_0334() {
    	HL = word_1305
    	C = 0x10
    lbl_0339:
    	A = H
    	HL += HL
    	A &= 0x60
    	JPE	lbl_0341
    	HL++
    lbl_0341:
    	C--
    	JNZ	lbl_0339
    	word_1305 = HL
    	A = H
    	A += L
    	A &= 0x07
    	JZ	proc_0334
    	RET
    }
    
    proc proc_0350() {
    	C = 0x1F
    	PUSH	DE
    	CALL	biosPrintChar
    	POP	DE
    	HL = 0x7997
    	B = 0x07
    	A = mem[DE]
    	DE++
    	byte_1318 = A
    lbl_0361:
    	PUSH	BC
    	BC = 0x0808
    lbl_0365:
    	A = mem[DE]
    	DE++
    	PUSH	DE
    	E = A
    	A = byte_1318
    	D = A
    	A = E
    lbl_036E:
    	RAL
    	JNC	lbl_0373
    	M = D
    lbl_0373:
    	HL++
    	C--
    	JNZ	lbl_036E
    	C = 0x08
    	POP	DE
    	B--
    	JNZ	lbl_0365
    	POP	BC
    	B--
    	RZ
    	C = 0x0E
    lbl_0384:
    	HL++
    	C--
    	JNZ	lbl_0384
    	JMP	lbl_0361
    }
    
    proc proc_038C() {
    	CALL	biosPrintChar(0x1F)
    	D = 0x15
    lbl_0393:
    	PUSH	DE
    	CALL	proc_0577
    	BC = 0x0B18
    	CALL	proc_056F
    	POP	DE
    	D--
    	JZ	proc_03AD
    	PUSH	DE
    	CALL	biosPrintMessage(0x045D)
    	POP	DE
    	JMP	lbl_0393
    }
    
    proc proc_03AD() {
    	CALL	biosPrintMessage(0x0474)
    	CALL	biosPrintChar(0x0C)
    	RET
    }
    
    proc proc_03B9() {
    	HL = 0x7885
    	DE = 0x048B
    	CALL	proc_03ED
    	HL = 0x791E
    	CALL	proc_03ED
    	HL = 0x796C
    	CALL	proc_03ED
    	HL = 0x79BA
    	CALL	proc_03ED
    	HL = 0x7A08
    	CALL	proc_03ED
    	HL = 0x7BDC
    	CALL	proc_03ED
    	HL = 0x7C78
    	CALL	proc_03ED
    	HL = 0x7D14
    	CALL	proc_03ED
    	RET
    }
    
    proc proc_03ED() {
    	A = mem[DE]
    	DE++
    	A |= A
    	RZ
    	M = A
    	HL++
    	JMP	proc_03ED
    }
    
    data_03F6:
    byte[] {
    	0x40, 0x00, 0x78, 0xFE, 0x18, 0x42, 0x18, 0x42, 0x00, 0x00, 0x84, 0x10, 0x24, 0x44, 0x24, 0x42, 0x00, 0x00, 0x80, 0x10, 0x42, 0x48, 0x42, 0x42, 0x00, 0x00, 0x80, 0x10, 0x42, 0x70, 0x42, 0x7E, 
    	0x00, 0x00, 0x80, 0x10, 0x7E, 0x48, 0x7E, 0x42, 0x00, 0x00, 0x84, 0x10, 0x42, 0x44, 0x42, 0x42, 0x00, 0x00, 0x78, 0x10, 0x42, 0x42, 0x42, 0x42, 0x00, 0x0D, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 
    	0x20, 0x77, 0x61, 0x7B, 0x65, 0x20, 0x69, 0x6D, 0x71, 0x20, 0x3F, 0x20, 0x00, 0x0D, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x61, 0x7B, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x20, 0x28, 0x30, 
    	0x2D, 0x39, 0x29, 0x20, 0x3F, 0x20, 0x00, 0x11, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x2E, 0x20, 0x11, 0x00, 0x15, 0x14, 
    	0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, 0x00, 0x75, 0x70, 0x72, 0x61, 0x77, 0x6C, 0x65, 0x6E, 0x69, 0x65, 0x00, 
    	0x1D, 0x20, 0x2D, 0x20, 0x73, 0x64, 0x77, 0x69, 0x67, 0x20, 0x77, 0x6C, 0x65, 0x77, 0x6F, 0x00, 0x0E, 0x20, 0x2D, 0x20, 0x73, 0x64, 0x77, 0x69, 0x67, 0x20, 0x77, 0x70, 0x72, 0x61, 0x77, 0x6F, 
    	0x00, 0x0F, 0x20, 0x2D, 0x20, 0x70, 0x6F, 0x77, 0x6F, 0x72, 0x6F, 0x74, 0x00, 0x0B, 0x20, 0x2D, 0x20, 0x70, 0x6F, 0x6B, 0x61, 0x7A, 0x61, 0x74, 0x78, 0x20, 0x73, 0x6C, 0x65, 0x64, 0x75, 0x60, 
    	0x7D, 0x60, 0x60, 0x00, 0x77, 0x73, 0x65, 0x67, 0x6F, 0x20, 0x6F, 0x7E, 0x6B, 0x6F, 0x77, 0x20, 0x20, 0x2D, 0x00, 0x72, 0x61, 0x6E, 0x67, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
    	0x2D, 0x00, 0x70, 0x6F, 0x6C, 0x6E, 0x79, 0x68, 0x20, 0x73, 0x74, 0x72, 0x6F, 0x6B, 0x20, 0x2D, 0x00
    }
    
    proc proc_0507() {
    	HL = 0x7DE6
    	word_132A = HL
    	B = 0x14
    @proc_050F:
    	C = 0x0A
    lbl_0511:
    	A = M
    	CPI	0x2E
    	JZ	proc_0526
    	HL++
    	HL++
    	C--
    	JNZ	lbl_0511
    	CALL	proc_0535
    	HL = word_132A
    	JMP	proc_050F
    }
    
    proc proc_0526() {
    	DE = 0xFFB2
    	HL = word_132A
    	HL += DE
    	word_132A = HL
    	B--
    	JNZ	proc_050F
    	RET
    }
    
    proc proc_0535() {
    	PUSH	BC
    	A = byte_1314
    	A++
    	byte_1314 = A
    	HL = word_132A
    	word_132C = HL
    	B--
    lbl_0544:
    	C = 0x14
    	HL = word_132C
    	XCHG
    	HL = 0xFFB2
    	HL += DE
    	word_132C = HL
    lbl_0551:
    	A = M
    	mem[DE] = A
    	DE++
    	HL++
    	C--
    	JNZ	lbl_0551
    	B--
    	JNZ	lbl_0544
    	HL = word_132C
    	DE = 0x2E20
    	C = 0x0A
    lbl_0565:
    	M = D
    	HL++
    	M = E
    	HL++
    	C--
    	JNZ	lbl_0565
    	POP	BC
    	RET
    }
    
    proc proc_056F() {
    	CALL	biosPrintChar
    	B--
    	JNZ	proc_056F
    	RET
    }
    
    proc proc_0577() {
    	CALL	biosPrintChar(0x0A)
    	JMP	biosPrintChar(0x0D)
    }
    
    proc proc_0581() {
    	A = byte_1314
    	A++
    	B = A
    	A = byte_1338
    	A++
    	C = A
    	A = 0
    lbl_058C:
    	A += 0x0A
    	C--
    	JNZ	lbl_058C
    	CMP	B
    	RP
    	A = byte_1338
    	CPI	0x09
    	RZ
    	A++
    	byte_1338 = A
    	JMP	biosPrintChar(0x07)
    }
    
    proc proc_05A3() {
    	A = byte_1319
    	HL = 0x1338
    	A += M
    	A += M
    	A += M
    	HL = 0x1317
    	A += M
    	E = A
    	D = 0
    	HL = word_1315
    	HL += DE
    	word_1315 = HL
    	RET
    }
    
    proc proc_05BB() {
    	word_1327 = HL
    	XCHG
    	byte_1326 = A = 0
    	byte_1329 = A = H
    lbl_05C7:
    	E = 0
    	B = 0x10
    	A |= A
    lbl_05CC:
    	A = L
    	RAL
    	L = A
    	A = H
    	RAL
    	H = A
    	A = E
    	RAL
    	E = A
    	A -= 0x0A
    	CMC
    	JNC	lbl_05DC
    	E = A
    lbl_05DC:
    	B--
    	JNZ	lbl_05CC
    	RAL
    	A &= 0x01
    	HL += HL
    	A |= L
    	L = A
    	A = E
    	A += 0x30
    	CALL	proc_05FE
    	A = H
    	A |= L
    	JNZ	lbl_05C7
    	A = byte_1329
    	A |= A
    	JP	lbl_05FD
    	A = 0x2D
    	CALL	proc_05FE
    lbl_05FD:
    	RET
    }
    
    proc proc_05FE() {
    	PUSH	HL
    	C = A
    	HL = word_1327
    	D = H
    	E = L
    	HL++
    	word_1327 = HL
    	A = byte_1326
    	A |= A
    	JZ	lbl_061B
    	B = A
    lbl_0611:
    	XCHG
    	A = M
    	XCHG
    	M = A
    	HL--
    	DE--
    	B--
    	JNZ	lbl_0611
    lbl_061B:
    	M = A = C
    	A = byte_1326
    	A++
    	byte_1326 = A
    	HL--
    	M = A
    	POP	HL
    	RET
    }
    
    proc proc_0628() {
    	B = M
    	HL++
    lbl_062A:
    	A = M
    	mem[DE] = A
    	HL++
    	DE++
    	B--
    	JNZ	lbl_062A
    	RET
    }
    
    proc proc_0633() {
    	HL = 0x1330
    	B = 0x08
    @proc_0638:
    	PUSH	HL
    @proc_0639:
    	CALL	biosReadKeyboard()
    	C = A
    	CPI	0x08
    	JZ	proc_0657
    	CPI	0x0D
    	JZ	proc_0666
    	CPI	0x20
    	JM	proc_0639
    	CALL	biosPrintChar
    	POP	HL
    	M = C
    	HL++
    	B--
    	JNZ	proc_0638
    	RET
    }
    
    proc proc_0657() {
    	A = B
    	CPI	0x08
    	JP	proc_0639
    	CALL	biosPrintChar
    	POP	HL
    	HL--
    	B++
    	JMP	proc_0638
    }
    
    proc proc_0666() {
    	POP	HL
    lbl_0667:
    	M = 0x20
    	HL++
    	B--
    	JNZ	lbl_0667
    	RET
    }
    
    proc proc_066F() {
    	HL = 0x1000
    	A = byte_132E
    	A++
    	E = A
    	D = 0x01
    @proc_0679:
    	A = D
    	CPI	0x0A
    	JP	proc_06D2
    	C = 0x20
    	A += 0x30
    	B = A
    @proc_0684:
    	CALL	proc_078A
    	C = B
    	CALL	proc_078A
    	C = 0x2E
    	CALL	proc_078A
    	CALL	proc_0788
    	B = 0x08
    	CALL	proc_077E
    	CALL	proc_0792
    	A = M
    	HL++
    	A += 0x30
    	C = A
    	CALL	proc_078A
    	CALL	proc_0792
    	B = 0x06
    	HL++
    	CALL	proc_077E
    	CALL	proc_0792
    	BC = 0x0308
    	CALL	proc_0795
    	A = byte_1322
    	CMP	D
    	JNZ	lbl_06C4
    	C = 0x2A
    	CALL	proc_078A
    	CALL	proc_078A
    lbl_06C4:
    	D++
    	A = D
    	CMP	E
    	RP
    	PUSH	HL
    	PUSH	DE
    	CALL	proc_0577
    	POP	DE
    	POP	HL
    	JMP	proc_0679
    }
    
    proc proc_06D2() {
    	C = 0x31
    	A += 0x26
    	B = A
    	JMP	proc_0684
    }
    
    proc proc_06DA() {
    	A = byte_132E
    	A |= A
    	JNZ	proc_06EE
    	A++
    	byte_132E = A
    	DE = 0x1000
    	HL = 0x1330
    	JMP	proc_0773
    }
    
    proc proc_06EE() {
    	B = A
    	B++
    	C = 0
    @proc_06F2:
    	DE = 0x1339
    	HL = 0x1000
    	A = C
    	RLC
    	RLC
    	RLC
    	RLC
    	A += 0x09
    	L = A
    	A = mem[DE]
    	CMP	M
    	JZ	proc_072E
    	JM	proc_073C
    @proc_0708:
    	A = L
    	A &= 0xF0
    	L = A
    	word_1320 = HL
    	A = C
    	A++
    	byte_1322 = A
    	CALL	proc_0760
    	HL = word_1320
    	XCHG
    @proc_071B:
    	HL = 0x1330
    	B = 0x10
    	CALL	proc_0775
    	A = byte_132E
    	CPI	0x0F
    	RZ
    	A++
    	byte_132E = A
    	RET
    }
    
    proc proc_072E() {
    	A = M
    @proc_072F:
    	HL++
    	DE++
    	byte_1323 = A
    	A = mem[DE]
    	CMP	M
    	JZ	proc_0756
    	JP	proc_0708
    @proc_073C:
    	C++
    	A = B
    	CMP	C
    	JNZ	proc_06F2
    	C--
    	A = byte_132E
    	CPI	0x0F
    	JNZ	proc_0708
    	DE = 0x10E0
    	A = 0x0F
    	byte_1322 = A
    	JMP	proc_071B
    }
    
    proc proc_0756() {
    	A = byte_1323
    	A--
    	JNZ	proc_072F
    	JMP	proc_073C
    }
    
    proc proc_0760() {
    	HL = 0x10EF
    	DE = 0x10FF
    lbl_0766:
    	A = M
    	mem[DE] = A
    	HL--
    	DE--
    	A = word_1320
    	A--
    	CMP	L
    	JNZ	lbl_0766
    	RET
    }
    
    proc proc_0773() {
    	B = 0x10
    @proc_0775:
    	A = M
    	mem[DE] = A
    	HL++
    	DE++
    	B--
    	JNZ	proc_0775
    	RET
    }
    
    proc proc_077E() {
    	C = M
    	HL++
    	CALL	proc_078A
    	B--
    	JNZ	proc_077E
    	RET
    }
    
    proc proc_0788() {
    	C = 0x20
    @proc_078A:
    	PUSH	HL
    	PUSH	DE
    	CALL	biosPrintChar
    	POP	DE
    	POP	HL
    	RET
    }
    
    proc proc_0792() {
    	BC = 0x0520
    @proc_0795:
    	PUSH	HL
    	PUSH	DE
    	CALL	proc_056F
    	POP	DE
    	POP	HL
    	RET
    }
    
    proc proc_079D() {
    	BC = 0x1020
    lbl_07A0:
    	M = C
    	HL++
    	B--
    	JNZ	lbl_07A0
    	CALL	biosPrintMessage(0x042F)
    	CALL	proc_0633
    	CALL	biosPrintMessage(0x0443)
    lbl_07B5:
    	CALL	biosReadKeyboard()
    	C = A
    	A -= 0x30
    	JM	lbl_07B5
    	CPI	0x0A
    	JP	lbl_07B5
    	byte_1338 = A
    	CALL	proc_038C
    	word_1315 = HL = 0
    	byte_1314 = A = 0
    	byte_1317 = A = 0x04
    	CALL	proc_03B9
    	CALL	proc_0334
    	byte_1300 = A
    @proc_07E1:
    	A = byte_1338
    	HL = 0x7C88
    	A += 0x30
    	M = A
    	HL = 0x131A
    	E = A = byte_1314
    	D = 0
    	CALL	proc_05BB
    	HL = 0x131A
    	DE = 0x7D24
    	CALL	proc_0628
    	DE = 0x1339
    	HL = word_1315
    	XCHG
    	CALL	proc_05BB
    	HL = 0x1339
    	DE = 0x7BEC
    	CALL	proc_0628
    	byte_1301 = A = byte_1300
    	CALL	proc_0334
    	byte_1300 = A
    	A = 0x5A
    	HL = 0x1338
    	A -= M
    	A -= M
    	A -= M
    	A -= M
    	A -= M
    	A -= M
    	byte_1310 = A
    	A = 0x50
    	A -= M
    	A -= M
    	byte_130F = A
    	JMP	proc_0100
    }
    
    proc proc_0836() {
    	CALL	proc_0507
    	CALL	proc_0581
    	CALL	proc_05A3
    	A = byte_132F
    	CPI	0x2E
    	JZ	proc_07E1
    	CALL	proc_06DA
    	CALL	biosPrintMessage(0x0882)
    	CALL	proc_0577
    	CALL	proc_066F
    	CALL	biosPrintMessage(0x086E)
    lbl_085C:
    	CALL	biosReadKeyboard()
    	A &= 0x5F
    	CPI	0x44
    	JZ	proc_0019
    	CPI	0x4E
    	JZ	biosWarmBoot
    	JMP	lbl_085C
    }
    
    data_086E:
    byte[] {
    	0x1B, 0x59, 0x34, 0x25, 0x65, 0x7D, 0x65, 0x20, 0x72, 0x61, 0x7A, 0x20, 0x28, 0x44, 0x2F, 0x4E, 0x29, 0x20, 0x3F, 0x00, 0x1F, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6D, 0x71, 
    	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x20, 0x20, 0x20, 0x20, 0x6F, 0x7E, 0x6B, 0x69, 0x0D, 0x0A, 0x00, 0xCA, 0x62, 0x03, 0x79, 0xBA, 0xCA, 0x0B, 0x03, 0x78, 0xA3, 0xBA, 
    	0xC2, 0x36, 0x03, 0x3E, 0x23, 0x32, 0x5A, 0x03, 0xC3, 0x55, 0x03, 0xBB, 0xC2, 0x42, 0x03, 0x3E, 0x2B, 0x32, 0x5A, 0x03, 0xC3, 0x55, 0x03, 0xFE, 0x40, 0xC2, 0x4D, 0x03, 0x11, 0xB2, 0xFF, 0xC3, 
    	0x50, 0x03, 0x11, 0x4E, 0x00, 0x3E, 0x19, 0x32, 0x5A, 0x03, 0x78, 0xE6, 0x3F, 0x47, 0x71, 0x23, 0x05, 0xC2, 0xE0, 0x01, 0xC3, 0x0B, 0x03, 0xC9, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x00, 
    	0x00, 0x00, 0x00, 0x02, 0x03, 0x03, 0x2E, 0x14, 0x02, 0x20, 0x81, 0x03, 0x01, 0x05, 0x01, 0x10, 0x81, 0x02
    }
    [свернуть]

    Эти 2 пользователя(ей) поблагодарили Trol73 за это полезное сообщение:

    M80(07.02.2024), parallelno(25.01.2024)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Программирование на ассемблере
    от shuran33 в разделе Вектор
    Ответов: 341
    Последнее: 05.11.2025, 20:00
  2. Программирование на ассемблере
    от tnt23 в разделе Океан-240
    Ответов: 6
    Последнее: 30.10.2025, 12:56
  3. Ответов: 22
    Последнее: 12.02.2023, 16:13
  4. Ответов: 275
    Последнее: 16.12.2018, 23:01
  5. Продам книгу- AMIGA: программирование на ассемблере
    от Doctor Max в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 01.03.2012, 00:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •