汇编题目,求高手解答,急~~~
把DA_BY1字节存储单元的8位二进制数分解成3个八进制数,其中高位八进制数存放在DA_BY2字节存储单元,最低位八进制数存储在DA_BY2+2字节存储单元,数据单元定义...
把DA_BY1字节存储单元的8位二进制数分解成3个八进制数,其中高位八进制数存放在DA_BY2字节存储单元,最低位八进制数存储在DA_BY2+2字节存储单元,数据单元定义如下:
DA_BY1 DB 6BH
DA_BY2 DB 3 DUP(0)
统计DA_WORD数据区中正数、0、负数的个数,数据定义如下:
DA_WORD DW -1,3,5,0,-5,-7,4,0,-8……
COUNT EQU $-DA_WORD
NUM DB 0 ;存放正数的个数
DB 0 ;存放0的个数
DB 0 ;存放负数的个数
设数据区中有三个字节单元DA1、DA2和DA3本应存放相同的代码,但现在有一单元代码存错了。试编制一程序,找出存错代码的单元,并将错误的代码送入CODES单元中,
存放错误代码单元的偏移地址送入ADDR单元中。数据如下:
DA1 DB 34H
DA2 DB 34H
DA3 DB 43H
CODES DB 0
ADDR DB 0
请各大高手相助~~~ 展开
DA_BY1 DB 6BH
DA_BY2 DB 3 DUP(0)
统计DA_WORD数据区中正数、0、负数的个数,数据定义如下:
DA_WORD DW -1,3,5,0,-5,-7,4,0,-8……
COUNT EQU $-DA_WORD
NUM DB 0 ;存放正数的个数
DB 0 ;存放0的个数
DB 0 ;存放负数的个数
设数据区中有三个字节单元DA1、DA2和DA3本应存放相同的代码,但现在有一单元代码存错了。试编制一程序,找出存错代码的单元,并将错误的代码送入CODES单元中,
存放错误代码单元的偏移地址送入ADDR单元中。数据如下:
DA1 DB 34H
DA2 DB 34H
DA3 DB 43H
CODES DB 0
ADDR DB 0
请各大高手相助~~~ 展开
2个回答
展开全部
第一题
DATAS SEGMENT
ORG 1000H
DA_BY1 DB 6BH ;=153(8)
DA_BY2 DB 3 DUP(0)
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AL,DA_BY1
MOV CL,2
ROL AL,CL
MOV BL,AL
AND AL,3
MOV DA_BY2,AL
MOV DX,2
MOV SI,OFFSET DA_BY2
MOV AL,BL
AG: MOV CL,3
ROL AL,CL
PUSH AX
AND AL,7
INC SI
MOV [SI],AL
POP AX
DEC DX
JNZ AG
INT 3
MOV AH,4CH
INT 21H
CODES ENDS
END START
第二题
DATAS SEGMENT
ORG 1000H
DA_WORD DW 0FFFFH,3,5,0,0FFFBH,0FFF9H,4,0,0FFF8H
DOUNT EQU $-DA_WORD
ORG 1020H
NUM DB 0 ;存放正数的个数
ZE DB 0 ;存放0的个数
PLUS DB 0
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,DOUNT
MOV CL,1
SHR AX,CL
MOV CX,AX
MOV SI,OFFSET DA_WORD
AG: MOV AX,[SI]
CMP AX,0
JNZ NOZ
INC [ZE]
JMP NEXT
NOZ:TEST AX,8000H
JNZ ISPLUS
INC [NUM]
JMP NEXT
ISPLUS:
INC [PLUS]
NEXT:
ADD SI,2
LOOP AG
INT 3
MOV AH,4CH
INT 21H
CODES ENDS
END START
第三题
DATAS SEGMENT
ORG 1000H
DA1 DB 34H
DA2 DB 34H
DA3 DB 43H
ORG 1010H
CODES1 DB 0 ;正常信息应是43H
ADDR1 DW 0 ;正常信息应是1002H
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV BL,[DA1];设第一个是错误的
MOV [CODES1],BL
MOV [ADDR1],OFFSET DA1
MOV AL,[DA1]
CMP AL,[DA2]
JNZ A1
MOV BL,[DA3];第三个错误
MOV [CODES1],BL
MOV [ADDR1],OFFSET DA3
JMP ENDIT
A1: CMP AL,[DA3]
JNZ ENDIT
MOV BL,[DA2];第二个错误
MOV [CODES1],BL
MOV [ADDR1],OFFSET DA2
ENDIT:
INT 3
MOV AH,4CH
INT 21H
CODES ENDS
END START
DATAS SEGMENT
ORG 1000H
DA_BY1 DB 6BH ;=153(8)
DA_BY2 DB 3 DUP(0)
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AL,DA_BY1
MOV CL,2
ROL AL,CL
MOV BL,AL
AND AL,3
MOV DA_BY2,AL
MOV DX,2
MOV SI,OFFSET DA_BY2
MOV AL,BL
AG: MOV CL,3
ROL AL,CL
PUSH AX
AND AL,7
INC SI
MOV [SI],AL
POP AX
DEC DX
JNZ AG
INT 3
MOV AH,4CH
INT 21H
CODES ENDS
END START
第二题
DATAS SEGMENT
ORG 1000H
DA_WORD DW 0FFFFH,3,5,0,0FFFBH,0FFF9H,4,0,0FFF8H
DOUNT EQU $-DA_WORD
ORG 1020H
NUM DB 0 ;存放正数的个数
ZE DB 0 ;存放0的个数
PLUS DB 0
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,DOUNT
MOV CL,1
SHR AX,CL
MOV CX,AX
MOV SI,OFFSET DA_WORD
AG: MOV AX,[SI]
CMP AX,0
JNZ NOZ
INC [ZE]
JMP NEXT
NOZ:TEST AX,8000H
JNZ ISPLUS
INC [NUM]
JMP NEXT
ISPLUS:
INC [PLUS]
NEXT:
ADD SI,2
LOOP AG
INT 3
MOV AH,4CH
INT 21H
CODES ENDS
END START
第三题
DATAS SEGMENT
ORG 1000H
DA1 DB 34H
DA2 DB 34H
DA3 DB 43H
ORG 1010H
CODES1 DB 0 ;正常信息应是43H
ADDR1 DW 0 ;正常信息应是1002H
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV BL,[DA1];设第一个是错误的
MOV [CODES1],BL
MOV [ADDR1],OFFSET DA1
MOV AL,[DA1]
CMP AL,[DA2]
JNZ A1
MOV BL,[DA3];第三个错误
MOV [CODES1],BL
MOV [ADDR1],OFFSET DA3
JMP ENDIT
A1: CMP AL,[DA3]
JNZ ENDIT
MOV BL,[DA2];第二个错误
MOV [CODES1],BL
MOV [ADDR1],OFFSET DA2
ENDIT:
INT 3
MOV AH,4CH
INT 21H
CODES ENDS
END START
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询