2个汇编语言问题,求解

1、在M数据段DATA单元开始存放2个8位无符号数,比较大小,并将大的传送到MAX单元2、已知AL中有一8位二进制数,测试其中的D2位,如果为1则转移到EXIT... 1、在M数据段DATA单元开始存放2个8位无符号数,比较大小,并将大的传送到MAX单元
2、已知AL中有一8位二进制数,测试其中的D2位,如果为1则转移到EXIT
展开
 我来答
cntjc88
2011-01-04 · TA获得超过4261个赞
知道小有建树答主
回答量:1844
采纳率:0%
帮助的人:653万
展开全部
1、已知AX=0FF60H,CF=1
MOV DX,96
XOR DH,0FFH
SBB AX,DX
执行上述指令序列后,AX=_ffffh,CF=__1
2、设寄存器AL,BL,CL中内容均为76H,
XOR AL,0FH
AND BL,0FH
OR CL,0FH
执行上述指令序列后,AL=__79h
BL=______06h_____,CL=_____7fh_____
3、已知AX=0A33AH,DX=0F0F0H
AND AH,DL ah=a0h
XOR AL,DH al=cah
NEG AH
NOT AL
执行上述指令序列后,AH=___60h___,AL=____35h____
4、DATA SEGMENT
S9 DB0,1,2,3,4,5,6,7,8,9
DATA ENDS

LEA SI,S9
LEA,DI,S9+1
MOV CX,5
LOP: MOV AL,[SI]
XCHG AL,[DI]
MOV [SI],AL
ADD SI,2
ADD DI,2
LOOP LOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
S9 DB 1,0,3,2,5,4,7,6,9,8
5、MOV AL,38H
MOV BL,49H
CALL SUBO
INC AL
DEC CL

SUBO PROC
ADD AL,BL
MOV CL,AL
DAA
RET
SUBO ENDP
上述程序段运行后,AL=______88h___,CL=____80h___
6、DA3 EQU WORD PTR DA4
DA4 DB 0ABH,89H

SHR DA3,1
MOV DX,DA3
SHL DA4,1
MOV CX,DA3
上述程序段运行后,CX=___10ccH______,DX=_____1066H___
四、程序填空题(注意:下列各小题中,每空只能填一条指令!每小题6分,共12分)
1、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。
xor ah,al_____
AND AH,08H
jnz zero_____
MOV AH,OFFH
JMP NEXT
ZERO:MOV AH,0
NEXT:……
2、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。
BUF DB 5,6,7,58H,62,45H,127,……
COUNT EQU $-BUF
MAX DB?

MON BX,OFFSET BUF
MOV CX,COUNT-1
MOV AL,[BX]
LOP1:INC BX
cmp al,[bx]____
JAE NEXT
MOV AL,[BX]
NEXT:DEC CX
jz lop1____
MOV MAX,AL
五、编制程序题(第1小题6分,第2小题14分,共20分)
1、编定程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符是"Y",则转向YES程序段;如字符是"N",则

转向NO程序段;如是其他字符,则转向DOS功能调用,重新输入字符。(考生勿需写出源程序格式,只需写出与试题要求有关的指令序

列)

(YES和NO分别是两程序段入口处的标号)
CODE SEGMENT
ASSUME CS:CODE
BEGIN:
MOV AH,01h
INT 21H
CMP AL,'Y'
JZ YES
CMP AL,'N'
JZ NO
JMP BEGIN
YES:..
...
...
NO:...
...
...
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
2、在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以

SUM为首址的数据区中。
DATA SEGMENT
BUF1 DW-56,24,54,-1,89,-8……
BUF2 DW45,-23,124,345,-265,……
SUM DW10DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN:
MOV AX,DATA
MOV ES,AX
MOV DS,AX
LEA SI,BUF1
MOV BX, OFFSET BUF2
LEA DI,SUM
MOV CX,10
L1:
MOV AX,[SI]
ROL AX,1
JC L2
ROR AX,1
L4:
MOV DX,AX
MOV AX,[BX]
ROL AX,1
JC L3
ROR AX,1
L5:
ADD AX,DX
MOV [DI],AX
INC BX
INC BX
INC SI
INC SI
INC DI
INC DI
LOOP L1
JMP LAST
L2:
ROR AX,1
NEG AX
JMP L4
L3:
ROR AX,1
NEG AX
JMP L5
LAST:
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
匿名用户
推荐于2018-05-17
展开全部
我也是学这门课,我试试吧。本人学的不是很精通,仅供参考。
1、CODE SEGMENT
ASSUME CS:CODE
MOV CX,OFFSET DATA
MOV DX,OFFSET MAX ;用LEA指令也可以
MOV AX,[CX]
MOV BX,[CX+1]
CMP AX,BX
JA LOOP1
MOV DX,BX
LOOP1:MOV DX,AX
CODE ENDS
END START
2、这个用TEST 指令就OK啦
是不是测试其中的低两位啊?
这样的话,主要的指令就是TEST AL,0011;低一位的话就是01
然后跳转就可以啦。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
剑出名堂
2011-01-03 · 超过11用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:20.8万
展开全部
1.程序:
LEA SI,DATA
LEA DI,MAX
MOV AL,BYTE PTR[SI];取DATA开始的8位数
INC SI
MOV BL,BYTE PTR[SI]
CMP AL,BL
JA L1
MOV [DI],BL
L1:MOV [DI],AL
前后格式自己补吧,手机党,辛苦呀!
2.D2是第二位?还是低二位?看成第2位吧!方法类似!
CLC
LEA DI,EXIT
MOV CL,2
SHR AL,CL
ADC BL,0
CMP BL,1
JNZ LP
MOV [DI],BL
LP: …
前后格式自己补哦

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户64926
2011-01-03
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
1楼和2楼都犯同一个错误,把DATA放进16位寄存器,取出来的是16位数而不是8位无符号数…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
坦率且恬淡丶茱萸6
2011-01-03 · TA获得超过812个赞
知道答主
回答量:133
采纳率:0%
帮助的人:160万
展开全部
第一个:
M segment
DATA db 250,100
MAX db ?
M ends
code segment
assume cs:code
main proc far
start:
push ds
sub ax,ax
push ax
mov ax,M
mov ds,ax
mov di,DATA
mov ax,[di]
cmp ax,[di+1]
jae store
mov ax,[di+1]
store:
mov MAX,ax
ret
code ends
end start
第二个:
code segment
assume cs:code
main proc far
start:
push ds
sub ax,ax
push ax
mov al,00100101B
mov cl,2
shr al,cl
and al,1
jnz exit
;
;此处是不为1的处理情况
;
ret
exit:
;
;此处是为1的处理情况
;
ret
code ends
end start
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式