永发信息网

请问哪位会逐条翻译汇编语言, 我是新学的 。谢谢!

答案:1  悬赏:20  手机版
解决时间 2021-01-27 04:55
  • 提问者网友:半生酒醒
  • 2021-01-26 08:06
请问哪位会逐条翻译汇编语言, 我是新学的 。谢谢!
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-01-26 09:16
DATA SEGMENT ;数据段开始标志
DATA ENDS ;数据段结束标志,其中没有数据。
CODE SEGMENT ;代码段开始标志
ASSUME DS:DATA,CS:CODE ;
START:MOV AL,10010001B
OUT 63H,AL ;将10010001写入63号端口
MAIN:IN AL,62H ;从62号端口读入一个字节
TEST AL,01H ;如果AL第一位是0跳转到MAIN
JZ MAIN
MOV AL,00H
OUT 61H,AL ;将AL=00H写入61号端口
B1:MOV AL,6DH
OUT 61H,AL ;将6DH写入61号端口
CALL A1 ;调用A1
MOV AL,66H
OUT 61H,AL
CALL A1
MOV AL,4FH
OUT 61H,AL
CALL A1
MOV AL,5BH
OUT 61H,AL
CALL A1
MOV AL,06H
OUT 61H,AL
CALL A1
MOV AL,3FH
OUT 61H,AL
CALL AA

;AA开始
AA PROC
IN AL,62H ;从62号端口读入一个字节的数据
TEST AL,08H ;如果AL第三位为0跳转到C1 ,否则继续循环AA
JZ C1
JMP AA
C1: MOV AL,00H
OUT 61H,AL ;将AL=00H写入61号端口
JMP MAIN ;跳转到MAIN
RET ;返回AA
AA ENDP ;AA结束

;A1开始
A1 PROC
MOV CX,0100H ;初始化CX

BB1:MOV BX,00B0H ;循环次数BX=176次

BB2:IN AL,60H ;从60号端口读入一个字节的数据
CMP AL,00000001B ;如果,读入数据等于1,跳到AA1
JZ AA1
CMP AL,00000010B ;如果,读入数据等于2,跳到AA2
JZ AA2
CMP AL,00000100B ;以下类似。就以跳到AA1继续讲解
JZ AA3
CMP AL,00001000B
JZ AA4
CMP AL,00010000B
JZ AA5
CMP AL,00100000B
JZ AA6
CMP AL,01000000B
JZ AA7
CMP AL,10000000B
JZ AA8
DEC BX ;bx计数器自减1,如果为0跳转到BB2,若不是0继续循环BB1
JNZ BB2
LOOP BB1
RET
A1 ENDP ;A1结束

AA1:MOV DX,61H ;将DX=61H
MOV AL,06H
OUT DX ,AL ;将AL=06H,写入dx=61H
JMP AA ;跳入AA
AA2:MOV DX,61H
MOV AL,5BH
OUT DX ,AL
JMP AA
AA3:MOV DX,61H
MOV AL,4FH
OUT DX ,AL
JMP AA
AA4:MOV DX,61H
MOV AL,66H
OUT DX ,AL
JMP AA
AA5:MOV DX,61H
MOV AL,6DH
OUT DX ,AL
JMP AA
AA6:MOV DX,61H
MOV AL,7DH
OUT DX ,AL
JMP AA
AA7:MOV DX,61H
MOV AL,07H
OUT DX ,AL
JMP AA
AA8:MOV DX,61H
MOV AL,7FH
OUT DX ,AL
JMP AA

CODE ENDS ;代码段结束标志
END START

此程序大概意思是这样:
先向63号端口发送一个数据145,然后他会从62号端口给你返回一个数据。先判断返回代码是否为0,(一般启动时都会先询问该端口是否忙碌),如果忙碌就返回MAIN,继续发送,直到空闲,然后开始程序。后面好像是在分析代码。类似于解密之类的。根据电脑返回的值,进行不同的操作。。。具体内容还是你自己看吧,不懂端口的人看的费力,还要查手册。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯