Другие языки программирования и технологии

Рабочая ли это программа (Ассемблер)?

Проверьте пожалуйста, рабочая ли эта прога на Ассемблере (программа игра "Червяк")
Препод сказал, что неправильная, хотя в целом рабочий вариант
Текст программы: Cseg segment para ‘code’

Org 100h

Assume cs:cseg

Start proc far

Jmp begin

Xz1 dw 55,’$’

Yz2 dw 50,’$’

Xz2 dw 54,’$’

Yz2 dw 50, ’$’

Xz3 dw 53, ’$’

Yz3 dw 50, ’$’

Xz4 dw 52, ’$’

Yz4 dw 50, ’$’

Xz5 dw 51, ’$’

Yz5 dw 50, ’$’

Ga db ‘Game Over’, ’$’

Begin:mov ah,00

Mov al,10h

Int 10h

C:mov cx,xz1

Mov dx,yz1

Mov ah,00

Int 16h

Gg:cmp ah,48h

Je vv

Cmp ah,50h

Je vn

Cmp ah,4dh

Je vp

Cmp ah,4bh

Je v1

Jmp c

Vv:sub yz1,1

Jmp go

Vn:add yz1,1

Jmp go

V1:sub xz1,1

Jmp go

Vp:add xz1,1

Go:mov ax,xz2

Mov es,yz2

Mov xz2,cx

Mov yz2,dx

Mov cx,xz3

Mov dx,yz3

Mov xz3,ax

Mov yz3,es

Mov ax,xz4

Mov es,yz4

Mov xz4,cx

Mov yz4,dx

Mov cx,xz5

Mov dx,yz5

Mov xz5,ax

Mov yz5,es

Mov ah,0ch

Mov al,00h

Int 10h

Mov ah,0ch

Mov al,07h

Mov cx,xz1

Mov dx,yz1

Int 10h

Cmp xz1,27fh

Je e

Cmp xz1,0

Je e

Cmp yz1,0

Je e

Jmp c

E:mov ah,02

Mov dx,0910h

Int 10h

Mov ah,09

Lea dx,ga

Int 21h

Int 20h

Start endp

Cseg ends

End start
Исправьте кавычки. Тут плохо видно, но они должны быть апострофами (у Вас - не апострофы) . Особенно это видно у Game Over. Первая. Дважды определена YZ2. Очевидно YZ2 в первом случае надо переименовать в YZ1. proc не нужен. Ну и кое-что ещё в названиях. .
Да и org 100h говорит о том, что это com файл. Не забудьте указать опцию у линкера, что собираетесь создавать его. (у tlink это параметр /tc). В логике ошибки не искал (и ничего не менял) - исправил только синтаксис. короче компилируемый код для TASM выглядит так (и да - червяк ползает =):

Cseg segment

Org 100h

Assume cs:cseg,ds:cseg
start:
Jmp begin

Xz1 dw 55, '$'
Yz1 dw 50, '$'
Xz2 dw 54, '$'
Yz2 dw 50, '$'
Xz3 dw 53, '$'
Yz3 dw 50, '$'
Xz4 dw 52, '$'
Yz4 dw 50, '$'
Xz5 dw 51, '$'
Yz5 dw 50, '$'
Ga db 'Game Over', '$'

Begin:mov ah,00
Mov al,10h
Int 10h

C:mov cx,xz1
Mov dx,yz1
Mov ah,00
Int 16h

Gg:cmp ah,48h
Je vv
Cmp ah,50h
Je vn
Cmp ah,4dh
Je vp
Cmp ah,4bh
Je v1
Jmp c

Vv:sub yz1,1
Jmp go

Vn:add yz1,1
Jmp go

V1:sub xz1,1
Jmp go

Vp:add xz1,1
Go:mov ax,xz2

Mov es,yz2
Mov xz2,cx
Mov yz2,dx
Mov cx,xz3
Mov dx,yz3
Mov xz3,ax
Mov yz3,es
Mov ax,xz4
Mov es,yz4
Mov xz4,cx
Mov yz4,dx
Mov cx,xz5
Mov dx,yz5
Mov xz5,ax
Mov yz5,es
Mov ah,0ch
Mov al,00h
Int 10h

Mov ah,0ch
Mov al,07h
Mov cx,xz1
Mov dx,yz1
Int 10h

Cmp xz1,27fh
Je e
Cmp xz1,0
Je e
Cmp yz1,0
Je e
Jmp c

E:mov ah,02
Mov dx,0910h
Int 10h

Mov ah,09
Lea dx,ga
Int 21h

Int 20h
Cseg ends
End Start
Антон Силин
Антон Силин
84 764
Лучший ответ
сейчас 98 поставлю и начню все проверять. . имхо асм забывать - кощунство
Октай Велиев
Октай Велиев
70 255