跪求微机接口与汇编2道题的解答。

STRING DB ‘ghijklmnopqrst''
MOV AH,01 ;从键盘输入字符1~9
INT 21H
AND AL,0FH
DEC AL
XOR AH,AH
MOV BX,OFFSET STRING
ADD BX,AX
MOV BL,[BX]
MOV AH,02H ;显示输出
INT 21H
试回答:(1)上述程序段的功能是什么?
(2)如从键盘输入字符‘2',程序段有什么结果?
DATA SEGMENT
ORG 0020H
DA1 DW 12H,23H
DA2 DB 11H,21H
DA3 EQU 1234H
DA4 EQU $-DA2
DA5 DB 31H,32H
DATA ENDS
请回答:(1)该程序段已占有的存储字节数是多少?
(2)符号名DA4的值是多少?符号名DA5的值是多少?

对您的帮助不甚感激。~~~~(>_<)~~~~
请问DA4=2是怎么得来的呢?

STRING DB ‘ghijklmnopqrst''
MOV AH,01 ;从键盘输入字符1~9
INT 21H
AND AL,0FH
DEC AL
XOR AH,AH
MOV BX,OFFSET STRING
ADD BX,AX
MOV BL,[BX]
MOV AH,02H ;显示输出
INT 21H
试回答:(1)上述程序段的功能是什么?
答:从键盘输入1个数字(1~9),程序执行后,显示字符串STRING中排在该位数的字符,如输入1 显示g,输入2 显示h。

(2)如从键盘输入字符‘2',程序段有什么结果?
答:显示h
DATA SEGMENT
ORG 0020H
DA1 DW 12H,23H
DA2 DB 11H,21H
DA3 EQU 1234H
DA4 EQU $-DA2
DA5 DB 31H,32H
DATA ENDS
请回答:(1)该程序段已占有的存储字节数是多少?
答:8字节。
(2)符号名DA4的值是多少?符号名DA5的值是多少?
答:DA4=2 DA5的值=31H

DA4为什么是2? 因为 EQU 是不占字节的,它只是定义一个常量,在程序中可以直接引用它。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-08
1.(1)0
(2)0
(3)[si]
(4)00001000b
(5)jnz
(6)inc
(7)loop
2.(1)0
(2)mov ah,03 int 14h
(3)(错误标志应该在AH)所以应该是:TEST AH,00001110b
(4)(错误标志应该在AH)所以应该是: TEST AH, 00100000b
(5)jz
(6)(??你想向哪个端口发送字符?)
(7)44h