汇编语言 设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容:麻烦高手 不要只写个结果
mydata segment
ORG 100H
VARW DW 1234H,5678H
VARB DB 3,4
AGLIN 4
VARD DD 12345678H
EVEN
BUFF DB 10 DUP(?)
MESS DB ’HELLO’
BEGIN: MOV AX,OFFSET MESS
MOV AX,TYPE BEGIN
MOV AX, OFFSET BEGIN 最后 画下图 展开
;假设多字节数据存放为小端序(little endian)
mydata segment
ORG 100H
VARW DW 1234H,5678H ;100H~103H,存放内容依次为34H, 12H, 78H, 56H
VARB DB 3,4 ;104H~105H,存入内容依次为03H, 04H
AGLIN 4 ;地址按4字节对齐,那么从106H开始的第1个按4字节齐的地址是108H
VARD DD 12345678H ;108H~10BH, 存入内容依次为78H, 56H, 34H, 12H
EVEN ;接下来数据存入地址从偶数地址开始
BUFF DB 10 DUP(?) ;10CH~115H, 分配10个字节,未初始化
MESS DB ’HELLO’ ;116H~11AH, 分别存入H,E,L,L,O字符的ASCII值
BEGIN: MOV AX,OFFSET MESS ;AX中存放MESS的偏移地址,AX中内容为116H
MOV AX,TYPE BEGIN ;表达式是标号,显然是属于NEAR,所以AX中内容为-1,即FFFFFFFFH
MOV AX, OFFSET BEGIN ;AX中存放MESS的偏移地址,AX中内容为11BH
非常非常 感谢 很详细 很详细 你很好
麻烦再问下MOV AX,TYPE BEGIN AX 为什么是-1
查了下TYPE伪指令:
TYPE 表达式
如果表达式是变量,则汇编程序将回送该变量的以字节数表示的类型:DB为1,DW为2,DD为4,DF为6,DQ为8,DT为10。如果表达式是标号,则汇编程序将回送代表该标号类型的数值:NEAR为 -1,FAR为 -2。如果表达式为常数,则应回送0。
显然BEGIN是标号,紧挨着MOV AX, TYPE BEGIN,肯定是属于NEAR的
1。增加BX,AX或地址BL,AL类型配对
2.mov AX,0A999H
3.MOV AX,0F8H
4.MOV 。 AX,1234H MOV AL,12H
5.MOV AX,[BX]
6.MOV DS,AX; DS不能直接保存号码
7.Add [BX],10个;
AX; 8.PUSH推可以直接推即时的
毫不逊色与AL,DX
10.OUT 40H,铝
11.MUL铝MUL不能直接与立即的数据
12.MOV [DI],AX MOV两个内存
13.ADD DI,AX
14.MOV DS,AX; CS不改变
15.SU