各位高手帮我解决一个汇编程序吧

来源:百度知道 编辑:UC知道 时间:2024/07/05 03:07:58
有以下程序段:
DATA SEGMENT
ORG 30H
CONT1 EQU 10H
S1 DB ‘MS-DOS’
DB 00H,0AH
CONT2 EQU $-S1
S2 DW ‘MS’,‘·’,‘DOS’,0D0AH
DATA ENDS
试问在数据段中:
(1)S1,S2的偏移地址分别是多少?
(2)求CONT2的值?
(3)指出字节单元S2+4的内容是多少?
拜托各位了,我很急要答案,先谢谢了
麻烦告诉我一些过程好吗
实在不明白答案是啥意思
EQU是什么意思?

(1)org是指定地址计数器的当前值,也就是说用org指定一个地址后,下面再分配的内存单元就是从指定位置开始。
题目中指定了org 30H,那么下一个要分配的单元就是30H。
而EQU是符号定义伪指令,它定义的符号就相当于C语言里的符号常量,并不占用存储空间。
所以,S1的偏移地址就是30H。
S1占用了8个单元(从30H到37H),下一个要分配的单元就是38H了。同样的道理,S2的偏移地址就是38H。
(2)$-S1
$表示地址计数器的当前值,这个值是38H,S1是30H,相减得到CONT2=8

(3)最后你的题目里有错误:
S2 DW ‘MS’’,‘DOS’,0D0AH
这条伪指令有错误,因为DW定义的数据不能是超过2个字符的字符串。而你这里定义'DOS'肯定是不对的。
所以第三题没有答案。
要是改成这样:S2 DW 'MS','·','DO',0D0AH
那么答案就是‘O’的ASCII码,即4FH。
楼上的第三题答案肯定是不对的,因为至少应该是大写字母的ASCII码吧?(范围在41H——5AH之间啊)

1、 S1是30H,s2是38H
2、count2是8H
3、内容是6f64H