求分析汇编程序功能…… DATA SEGMENT DA1 DB 10 DUP(2,3) DA2 DW 10 DUP(02
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 12:42:52
求分析汇编程序功能…… DATA SEGMENT DA1 DB 10 DUP(2,3) DA2 DW 10 DUP(0203H) DA3 DB DATA ENDS CODE
DATA SEGMENT ;定义数据段,数据段名为:DATA
DA1 DB 10 DUP(2,3)
;上句定义20个字节(BYTE)型数据存储单元,名为DA1,
初始值为2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3
DA2 DW 10 DUP(0203H)
;上句定义10个字(WORD)型数据存储单元,名为DA2,初始值均为0203H(十六进制数)
DA3 DB ;定义1个字节(BYTE)型数据存储单元,名为DA3,未赋初始值
DATA ENDS ;数据段结束
CODE ;此处为代码段名,以下应开始定义代码段了……
再问: 这个后面还有……ST: MOV AX,DATA MOV DS,AX LEA BX,DA1 XOR SI,SI XOR AL,AL MOV CX,10 LP: ADD AL,[BX] ADD AL,BYTE PTR DA2[SI] ADD SI,2 INC BX LOOP LP MOV DA3,AL MOV AH,4CH INT 21H CODE ENDS END ST 整个实现了什么功能啊
再答: 你追问的内容属于代码段的部分,先逐行说明: ST: MOV AX,DATA MOV DS,AX ; 以上这两句作用是将数据段DATA与数据段寄DS存器相关联 LEA BX,DA1 ;将DA1首地址送入BX XOR SI,SI ;利用异或指令清零SI寄存器 XOR AL,AL ;利用异或指令清零AL寄存器 MOV CX,10 ;将CX寄存器赋初值10,作为循环计数初始值 LP: ADD AL,[BX] ; AL寄存器的内容加上DA1中某一字节单元的内容(每次循环都是不同的字节单元),结果保存在AL ADD AL,BYTE PTR DA2[SI] ;AL寄存器的内容加上DA2中某一字节单元的内容(每次循环都是不同的字节单元,而且是从开始算起第奇数个字节单元),结果保存在AL ADD SI,2 ;SI寄存器的值加2 INC BX ;BX寄存器的值加1 LOOP LP ;循环语句:只要CX的值不为0,便跳转至标号LP处继续执行 MOV DA3,AL ;将AL的值存入DA3 MOV AH,4CH INT 21H ;这两句表明程序退出 CODE ENDS ;代码段结束伪指令 END ST ;全部汇编源程序结束伪指令 【整体功能】: 由于DA1中数据为: 2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3 即 02H,03H,02H,03H,02H,03H,02H,03H,02H,03H, 02H,03H,02H,03H,02H,03H,02H,03H,02H,03H DA2中数据为: 03H,02H,03H,02H,03H,02H,03H,02H,03H,02H, 03H,02H,03H,02H,03H,02H,03H,02H,03H,02H 在你给出的程序的循环体中,将DA1的前10个数据以及DA2的第1、3、5、7、9、11、13、15、17、19个 数据(一共20个数据)做和,结果为5*5+3*10=25+30=55(十进制的),十六进制形式就是37H。 解释一下,为什么字型数据0203H在内存中变成了03H,02H,这是由于80X86处理器对存储器的组织方式是“小端存储”方式,所以,在字节上,顺序有所颠倒。
DA1 DB 10 DUP(2,3)
;上句定义20个字节(BYTE)型数据存储单元,名为DA1,
初始值为2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3
DA2 DW 10 DUP(0203H)
;上句定义10个字(WORD)型数据存储单元,名为DA2,初始值均为0203H(十六进制数)
DA3 DB ;定义1个字节(BYTE)型数据存储单元,名为DA3,未赋初始值
DATA ENDS ;数据段结束
CODE ;此处为代码段名,以下应开始定义代码段了……
再问: 这个后面还有……ST: MOV AX,DATA MOV DS,AX LEA BX,DA1 XOR SI,SI XOR AL,AL MOV CX,10 LP: ADD AL,[BX] ADD AL,BYTE PTR DA2[SI] ADD SI,2 INC BX LOOP LP MOV DA3,AL MOV AH,4CH INT 21H CODE ENDS END ST 整个实现了什么功能啊
再答: 你追问的内容属于代码段的部分,先逐行说明: ST: MOV AX,DATA MOV DS,AX ; 以上这两句作用是将数据段DATA与数据段寄DS存器相关联 LEA BX,DA1 ;将DA1首地址送入BX XOR SI,SI ;利用异或指令清零SI寄存器 XOR AL,AL ;利用异或指令清零AL寄存器 MOV CX,10 ;将CX寄存器赋初值10,作为循环计数初始值 LP: ADD AL,[BX] ; AL寄存器的内容加上DA1中某一字节单元的内容(每次循环都是不同的字节单元),结果保存在AL ADD AL,BYTE PTR DA2[SI] ;AL寄存器的内容加上DA2中某一字节单元的内容(每次循环都是不同的字节单元,而且是从开始算起第奇数个字节单元),结果保存在AL ADD SI,2 ;SI寄存器的值加2 INC BX ;BX寄存器的值加1 LOOP LP ;循环语句:只要CX的值不为0,便跳转至标号LP处继续执行 MOV DA3,AL ;将AL的值存入DA3 MOV AH,4CH INT 21H ;这两句表明程序退出 CODE ENDS ;代码段结束伪指令 END ST ;全部汇编源程序结束伪指令 【整体功能】: 由于DA1中数据为: 2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3 即 02H,03H,02H,03H,02H,03H,02H,03H,02H,03H, 02H,03H,02H,03H,02H,03H,02H,03H,02H,03H DA2中数据为: 03H,02H,03H,02H,03H,02H,03H,02H,03H,02H, 03H,02H,03H,02H,03H,02H,03H,02H,03H,02H 在你给出的程序的循环体中,将DA1的前10个数据以及DA2的第1、3、5、7、9、11、13、15、17、19个 数据(一共20个数据)做和,结果为5*5+3*10=25+30=55(十进制的),十六进制形式就是37H。 解释一下,为什么字型数据0203H在内存中变成了03H,02H,这是由于80X86处理器对存储器的组织方式是“小端存储”方式,所以,在字节上,顺序有所颠倒。
求分析汇编程序功能…… DATA SEGMENT DA1 DB 10 DUP(2,3) DA2 DW 10 DUP(02
DATA SEGMENT X DB 3DUP(2,1,4DUP(1,0)) Y DD 6DUP(?) W EQU $-X
求下面程序每步的说明DATA SEGMENT LIST DB 10,,10 DUP("$")X DB DATA ENDS
汇编语言中DA1 DB 04H DUP(3 DUP(2),2 DUP(3))什么意思
VAR DW 10 DUP(4 DUP(1),2,3)分配了多少内存单元?
DATA SEGEMENT D1 dB 5 7 4 3 2 D2 db 6 5 9 7 3 S1 dB 6 Dup(?)
dat db 3 ,,3 dup(?
a db 3,4 dup
DAT1 DW ?DUP(1) DAT2 DB 16,25,42 DAT3 DD? CNT EQU $-DAT1 求CN
DAT1 DW DUP(1) DAT2 DB 16,25,42 DAT3 DD?CNT EQU $-DAT1 求CNT
汇编语言ONE DB 5 DUP (1)和THREE DW 5 DUP (1)的意思,
DATA SEGMENT A DB -1,3,2,-2 B DW 5,2,1 DATA ENDS ... LEA BX.