江苏三级汇编语言,程序执行后寄存器AL与BX的值,求详细过程

BUF DB 1,2,3,4
DAT DW 5,6,7,8
CNT EQU MYM - BUF
MOV SI,4
MOV AL,BUF[SI]
MOV BX,CNT

CNT EQU MYM - BUF 这还能减? MYM是啥?

第1个回答  2015-06-03
BUF DB 1,2,3,4
DAT DW 5,6,7,8
CNT EQU MYM - BUF ;这里少了MYM的定义,如果不是你漏写了,就是题目写错了。
;一般写作CNT EQU $-BUF,CNT是变量名,$是当前地址,BUF是
;变量BUF的首地址,$-BUF则是BUF到当前地址的长度,通常用于获取
;BUF(字符串)的长度

MOV SI,4 ;
MOV AL,BUF[SI] ;BUF[4],即dat的第一个元素5,而dat是dw类型,双字节,其值
;0005,而x86体系是litte endian,即数字的低位存储在低地址,
;所以DAT在内存中顺序存储是 05 00 06 00 07 00 08 00,所以
;BUF[4],即Dat的第1个字节是05,执行完毕后,al是05

MOV BX,CNT ;CNT,如果把MYM改成$,则是BUF到CNT的长度,即12字节,BX
;为000C本回答被提问者和网友采纳
相似回答