初学汇编,大家帮忙看看代码

csdboy 2005-04-12 12:02:22
代码如下:
pa55 equ 218h
pb55 equ 219h
p55ct1 equ 21bh

data segment
table dw 0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180h
dw 0201h,0202h,0204h,0208h,0210h,0220h,0240h,0280h
dw 0404h,0402h,0404h,0408h,0410h,0420h,0440h,0480h
char db 'CDEFBA9845673210'
mes db 'PLAY ANY KEY IN THE SMALL KEYBOARD!',0ah,0dh
db 'IT WILL BE ON THE SOREEN !END WITHE',0ah,0dh
data ends
code segment
main proc far
assum cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ah,09
int 21h
ky: call key
cmp d1,'R'
jnz ky
mov ax,4c00h
int 21h
ret
main endp
key proc near
kst:
mov a1,82h
mov dx,p55ct1
out dx,al
wait1:
mov a1,00
mov dx,pa55
out dx,al
mov dx,pb55
int al,dx
cmp,0ffh
jz,wait1
push ax
push ax
mov cx,1000h
dly:
loop dly
mov dx,p55ctl
mov al,90h
out dx,al
mov dx,pb55
pop ax
out dx,al
mov dx,pa55
in al,dx
pop bx
mov ah,bl
not ax
mov si,offset table
mov di,offset char
mov cx 24
tt:
cmp ax,[si]
jz nn
dec cx
jz kst
add si,2
jmp tt
nn:
mov dl,[di]
mov ah,02
int 21h
push dx
mov al 82h
mov dx p55ctl
out dx,al
wait2:
mov al,00
mov dx,pb55
in al,ax
cmp al,offh
jnz wait2
pop dx
ret
key endp
code ends
end start
(以上代码是在图书馆的书上抄下来,代码有的地方看不明白.希望大家能帮着写一下注释 push pop segment mov jmp 这些能看懂)
谢谢大家的帮助



...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
freemanone 2005-04-17
  • 打赏
  • 举报
回复
楼上的楼上,你的原码太乱了,搞得我的DEBUG都进行不下去了.
我建议先学点短小的程序,在学这么长的程序.
suyun9329 2005-04-16
  • 打赏
  • 举报
回复
up
xia renjie 2005-04-12
  • 打赏
  • 举报
回复
我感觉你书都没看,要不然怎么会连push pop 这些指令都不知道!
csdboy 2005-04-12
  • 打赏
  • 举报
回复
To xia renjie
push pop mov 这些能看懂 程序的整体作用不是太明白 所以想请大家帮着注释一下
sky911911 2005-04-12
  • 打赏
  • 举报
回复
我也在学 大家一起进步哦 呵呵!
tiancai1 2005-04-12
  • 打赏
  • 举报
回复
代玛我改了,确实有很多问题。
PA55 EQU 218H
PB55 EQU 219H
P55CTL EQU 21BH

DATA SEGMENT
TABLE1 DW 0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180H
DW 0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280H
DW 0404H,0402H,0404H,0408H,0410H,0420H,0440H,0480H
CHAR DB 'CDEFBA9845673210'
MES DB 'PLAY ANY KEY IN THE SMALL KEYBOARD!',0AH,0DH
DB 'IT WILL BE ON THE SOREEN !END WITHE',0AH,0DH
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,09
INT 21H
KY: CALL KEY
CMP DL,'R'
JNZ KY
MOV AX,4C00H
INT 21H
RET
MAIN ENDP
KEY PROC NEAR
KST:
MOV AL,82H
MOV DX,P55CTL
OUT DX,AL
WAIT1:
MOV AL,00
MOV DX,PA55
OUT DX,AL
MOV DX,PB55
IN AL,DX

CMP AL,0FFH

JZ WAIT1
PUSH AX
PUSH AX
MOV CX,1000H
DLY:
LOOP DLY
MOV DX,P55CTL
MOV AL,90H
OUT DX,AL
MOV DX,PB55
POP AX
OUT DX,AL
MOV DX,PA55
IN AL,DX
POP BX
MOV AH,BL
NOT AX
MOV SI,OFFSET TABLE1
MOV DI,OFFSET CHAR
MOV CX,24
TT:
CMP AX,[SI]
JZ NN
DEC CX
JZ KST
ADD SI,2
JMP TT
NN:
MOV DL,[DI]
MOV AH,02
INT 21H
PUSH DX
MOV AL ,82H
MOV DX, P55CTL
OUT DX,AL
WAIT2:
MOV AL,00
MOV DX,PB55
IN AL,DX
CMP AL,0FFH
JNZ WAIT2
POP DX
RET
KEY ENDP
CODE ENDS
END START
就能听见声音和一堆乱码,
不知道改得对不对。
ccunion 2005-04-12
  • 打赏
  • 举报
回复
代码有问题 是不是抄错了
VxD1 2005-04-12
  • 打赏
  • 举报
回复
代码有问题,

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧