『楼 主』:
请教一下这几行汇编是什么意思?
使用 LLM 解释/回答一下
实例为一个键盘测试程序
以下为请教的部分:(具体关键程序段详见后)
;INT 9
1867: PUSH AX 保存ax寄存器,这与下面的内容无关,不管。
1868: IN AL,60 读键盘扫描码
186A: PUSH AX 先保存在堆栈中
186B: IN AL,61 取控制寄存器值
186D: OR AL,80 高位置位
186F: OUT 61,AL 送到控制寄存器,表示按键认可
1871: AND AL,7F 高位清除
1873: OUT 61,AL 送到控制寄存器,表示键盘复位
1875: POP AX 从堆栈中恢复所按键的扫描码
其中有以下语句,不知与AL作比较的是代表什么意思?
CMP AL,E0
CMP AL,E1
CMP AL,FA
CMP AL,AA
TEST AL,80
CMP AL,F1
CMP AL,F2
CMP AL,9D
CMP AL,BA
CMP AL,C5
CMP AL,C6
CMP AL,B8
CMP AL,38
CMP AL,1D
CMP AL,36
CMP AL,01
CMP AL,3B
...
MOV AL,20 ;复位8259控制芯片
OUT 20,AL
POP AX
IRET
有以下几处调用1856的,请问放入到AL寄存器的值代表什么意思啊?
MOV AL,F3
CALL 1856
MOV AL,2A
CALL 1856
MOV AL,ED
CALL 1856
MOV AL,00
CALL 1856
MOV AL,ED
CALL 1856
MOV AL,07
CALL 1856
MOV AL,2C
CALL 1856
=====================================
下面为反汇编出的程序片段
=====================================
1135:1856 E660 OUT 60,AL ;不明白这句??
1135:1858 2E CS:
1135:1859 F6060F0101 TEST BYTE PTR [010F],01
1135:185E 74F8 JZ 1858
1135:1860 2E CS:
1135:1861 C6060F0100 MOV BYTE PTR [010F],00
1135:1866 C3 RET
1135:1867 50 PUSH AX
1135:1868 E460 IN AL,60
1135:186A 50 PUSH AX
1135:186B E461 IN AL,61
1135:186D 0C80 OR AL,80
1135:186F E661 OUT 61,AL
1135:1871 247F AND AL,7F
1135:1873 E661 OUT 61,AL
1135:1875 58 POP AX
1135:1876 3CE0 CMP AL,E0 ;???? 就是这些判断语句不知代表什么按键还是键盘的扫描码,如果是扫描码,却是E0???真的不清楚。。。
1135:1878 7509 JNZ 1883
1135:187A 2E CS:
1135:187B C606080101 MOV BYTE PTR [0108],01
1135:1880 E94401 JMP 19C7
1135:1883 3CE1 CMP AL,E1 ;????
1135:1885 7509 JNZ 1890
1135:1887 2E CS:
1135:1888 C606090101 MOV BYTE PTR [0109],01
1135:188D E93701 JMP 19C7
1135:1890 3CFA CMP AL,FA ;????
1135:1892 7509 JNZ 189D
1135:1894 2E CS:
1135:1895 C6060F0101 MOV BYTE PTR [010F],01
1135:189A E99F00 JMP 193C
1135:189D 3CAA CMP AL,AA ;????
1135:189F 7522 JNZ 18C3
1135:18A1 2E CS:
1135:18A2 F606080101 TEST BYTE PTR [0108],01
1135:18A7 7517 JNZ 18C0
1135:18A9 2E CS:
1135:18AA F6060D0101 TEST BYTE PTR [010D],01
1135:18AF 7509 JNZ 18BA
1135:18B1 2E CS:
1135:18B2 C6060A0101 MOV BYTE PTR [010A],01
1135:18B7 EB7D JMP 1936
1135:18B9 90 NOP
1135:18BA 2E CS:
1135:18BB C6060D0100 MOV BYTE PTR [010D],00
1135:18C0 EB7A JMP 193C
1135:18C2 90 NOP
1135:18C3 A880 TEST AL,80
1135:18C5 747E JZ 1945
1135:18C7 3CF1 CMP AL,F1
1135:18C9 747A JZ 1945
1135:18CB 3CF2 CMP AL,F2
1135:18CD 7476 JZ 1945
1135:18CF 3C9D CMP AL,9D
1135:18D1 7522 JNZ 18F5
1135:18D3 2E CS:
1135:18D4 F606090101 TEST BYTE PTR [0109],01
1135:18D9 7561 JNZ 193C
1135:18DB 2E CS:
1135:18DC F606080101 TEST BYTE PTR [0108],01
1135:18E1 7509 JNZ 18EC
1135:18E3 2E CS:
1135:18E4 80260C01FE AND BYTE PTR [010C],FE
1135:18E9 EB51 JMP 193C
1135:18EB 90 NOP
1135:18EC 2E CS:
1135:18ED 80260C01FD AND BYTE PTR [010C],FD
1135:18F2 EB48 JMP 193C
1135:18F4 90 NOP
1135:18F5 3CBA CMP AL,BA
1135:18F7 7509 JNZ 1902
1135:18F9 2E CS:
1135:18FA C606100100 MOV BYTE PTR [0110],00
1135:18FF EB3B JMP 193C
1135:1901 90 NOP
1135:1902 3CC5 CMP AL,C5
1135:1904 7517 JNZ 191D
1135:1906 2E CS:
1135:1907 F606090101 TEST BYTE PTR [0109],01
1135:190C 2E CS:
1135:190D C606090100 MOV BYTE PTR [0109],00
1135:1912 7528 JNZ 193C
1135:1914 2E CS:
1135:1915 C606110100 MOV BYTE PTR [0111],00
1135:191A EB20 JMP 193C
1135:191C 90 NOP
1135:191D 3CC6 CMP AL,C6
1135:191F 7511 JNZ 1932
1135:1921 2E CS:
1135:1922 F606080101 TEST BYTE PTR [0108],01
1135:1927 7513 JNZ 193C
1135:1929 2E CS:
1135:192A C606120100 MOV BYTE PTR [0112],00
1135:192F EB0B JMP 193C
1135:1931 90 NOP
1135:1932 3CB8 CMP AL,B8
1135:1934 7506 JNZ 193C
1135:1936 2E CS:
1135:1937 C6060B0100 MOV BYTE PTR [010B],00
1135:193C 2E CS:
1135:193D C606080100 MOV BYTE PTR [0108],00
1135:1942 E98200 JMP 19C7
1135:1945 2E CS:
1135:1946 A20701 MOV [0107],AL
1135:1949 3C38 CMP AL,38
1135:194B 7509 JNZ 1956
1135:194D 2E CS:
1135:194E C6060B0101 MOV BYTE PTR [010B],01
1135:1953 EB42 JMP 1997
1135:1955 90 NOP
1135:1956 3C1D CMP AL,1D
1135:1958 751F JNZ 1979
1135:195A 2E CS:
1135:195B F606090101 TEST BYTE PTR [0109],01
1135:1960 7565 JNZ 19C7
1135:1962 2E CS:
1135:1963 F606080101 TEST BYTE PTR [0108],01
1135:1968 7509 JNZ 1973
1135:196A 2E CS:
1135:196B 800E0C0101 OR BYTE PTR [010C],01
1135:1970 EB07 JMP 1979
1135:1972 90 NOP
1135:1973 2E CS:
1135:1974 800E0C0102 OR BYTE PTR [010C],02
1135:1979 3C2A CMP AL,2A
1135:197B 750E JNZ 198B
1135:197D 2E CS:
1135:197E F606080101 TEST BYTE PTR [0108],01
1135:1983 7542 JNZ 19C7
1135:1985 2E CS:
1135:1986 C6060D0101 MOV BYTE PTR [010D],01
1135:198B 3C36 CMP AL,36
1135:198D 7508 JNZ 1997
1135:198F 2E CS:
1135:1990 F606080101 TEST BYTE PTR [0108],01
1135:1995 7530 JNZ 19C7
1135:1997 3C01 CMP AL,01
1135:1999 7511 JNZ 19AC
1135:199B 2E CS:
1135:199C F6060B0101 TEST BYTE PTR [010B],01
1135:19A1 741E JZ 19C1
1135:19A3 2E CS:
1135:19A4 C606050101 MOV BYTE PTR [0105],01
1135:19A9 EB1C JMP 19C7
1135:19AB 90 NOP
1135:19AC 3C3B CMP AL,3B
1135:19AE 7511 JNZ 19C1
1135:19B0 2E CS:
1135:19B1 F6060B0101 TEST BYTE PTR [010B],01
1135:19B6 7409 JZ 19C1
1135:19B8 2E CS:
1135:19B9 C606040101 MOV BYTE PTR [0104],01
1135:19BE E97BFF JMP 193C
1135:19C1 2E CS:
1135:19C2 C606060101 MOV BYTE PTR [0106],01
1135:19C7 B020 MOV AL,20
1135:19C9 E620 OUT 20,AL
1135:19CB 58 POP AX
1135:19CC CF IRET
=====================================
1135:1A2B FA CLI
1135:1A2C B009 MOV AL,09
1135:1A2E B435 MOV AH,35
1135:1A30 CD21 INT 21
1135:1A32 8CC0 MOV AX,ES
1135:1A34 8ED8 MOV DS,AX
1135:1A36 8BD3 MOV DX,BX
1135:1A38 B060 MOV AL,60
1135:1A3A B425 MOV AH,25
1135:1A3C CD21 INT 21
1135:1A3E 1F POP DS
1135:1A3F BA6718 MOV DX,1867
1135:1A42 B009 MOV AL,09
1135:1A44 B425 MOV AH,25
1135:1A46 CD21 INT 21
1135:1A48 FB STI
1135:1A49 B0F3 MOV AL,F3
1135:1A4B E808FE CALL 1856
1135:1A4E B02A MOV AL,2A
1135:1A50 E803FE CALL 1856
1135:1A53 2E CS:
1135:1A54 C606040100 MOV BYTE PTR [0104],00
1135:1A59 2E CS:
1135:1A5A C6060A0100 MOV BYTE PTR [010A],00
1135:1A5F B0ED MOV AL,ED ;AL的值到底代表什么?
1135:1A61 E8F2FD CALL 1856
1135:1A64 B000 MOV AL,00
1135:1A66 E8EDFD CALL 1856
...
|