急!!!微机原理考试题,高分求答案
急!!!微机原理考试题,高分求答案1.程序分析题ORG2000HARYDW-4,3,-2,1CNTDW$-ARYVARDWARY,$+4...MOVAX,ARYMOVBX...
急!!!微机原理考试题,高分求答案
1.程序分析题
ORG 2000H
ARY DW -4,3,-2,1
CNT DW $ -ARY
VAR DW ARY,$ +4
.
.
.
MOV AX,ARY
MOV BX,OFFSET VAR
MOV CX,CNT
MOV DX,VAR+2
LEA SI,ARY
.
.
.
问:此程序段执行后,寄存器AX,BX,CX,DX,与SI中的内容各为多少?
(注:这是个大题,要给出步骤)
2,编程:已知某数组ARRAY中有100个带符号字节数,试用汇编语言编写一源程序,统计该数组中相邻两数间符号变换的次数,并将次数存放在NUM单元中。
3,编程:从AA单元开始的30个连续单元中存放有30个无符号数,从中找出最大数送入BB单元中,试编程。 展开
1.程序分析题
ORG 2000H
ARY DW -4,3,-2,1
CNT DW $ -ARY
VAR DW ARY,$ +4
.
.
.
MOV AX,ARY
MOV BX,OFFSET VAR
MOV CX,CNT
MOV DX,VAR+2
LEA SI,ARY
.
.
.
问:此程序段执行后,寄存器AX,BX,CX,DX,与SI中的内容各为多少?
(注:这是个大题,要给出步骤)
2,编程:已知某数组ARRAY中有100个带符号字节数,试用汇编语言编写一源程序,统计该数组中相邻两数间符号变换的次数,并将次数存放在NUM单元中。
3,编程:从AA单元开始的30个连续单元中存放有30个无符号数,从中找出最大数送入BB单元中,试编程。 展开
3个回答
展开全部
1.程序分析题
ORG 2000H
ARY DW -4,3,-2,1
CNT DW $ -ARY
VAR DW ARY,$ +4
.
.
.
MOV AX,ARY ;AX=0FFFCH
MOV BX,OFFSET VAR ;BX=2008H
MOV CX,CNT ;CX=8
MOV DX,VAR+2 ;DX=200EH
LEA SI,ARY ;SI=2000H
此程序段执行后,
AX=0FFFCH
BX=2008H
CX=8
DX=200EH
SI=2000H
; -----------------------------------------
2,编程:已知某数组ARRAY中有100个带符号字节数,试用汇编语言编写一源程序,统计该数组中相邻两数间符号变换的次数,并将次数存放在NUM单元中。
cld
lea si,ARRAY ;取数组ARRAY地址
mov cx,100 ;数组元素个数
mov NUM,0 ;计数器清零
lodsb ;读入第一个数组元素至累加器al
dec cx
and al,80h ;保留符号位,屏蔽掉其余各位
rol al,1 ;循环左移一位,符号位进入第0位
mov ah,al ;作为相邻两数间符号是否变换的比较对象
Count:lodsb ;读入一个数组元素至累加器al
and al,80h
rol al,1
xor ah,al ;相邻两元素符号位异或,相同则0,相异则1
add NUM,ah ;计数
mov ah,al ;保存当前元素符号位
loop Count ;循环,处理下一个元素
; -----------------------------------------
3,编程:从AA单元开始的30个连续单元中存放有30个无符号数,从中找出最大数送入BB单元中,试编程。
假设这30个无符号数都是字节元素。
cld
lea si,AA
lodsb ;装入第一个元素,作为最大数初值
mov cx,29
Compare:
cmp al,[si]
jae $+4 ;当前最大数>=当前元素
mov al,[si] ;当前最大数<当前元素,更新最大数
inc si
loop Compare
mov BB,al ;最大数送BB单元
ORG 2000H
ARY DW -4,3,-2,1
CNT DW $ -ARY
VAR DW ARY,$ +4
.
.
.
MOV AX,ARY ;AX=0FFFCH
MOV BX,OFFSET VAR ;BX=2008H
MOV CX,CNT ;CX=8
MOV DX,VAR+2 ;DX=200EH
LEA SI,ARY ;SI=2000H
此程序段执行后,
AX=0FFFCH
BX=2008H
CX=8
DX=200EH
SI=2000H
; -----------------------------------------
2,编程:已知某数组ARRAY中有100个带符号字节数,试用汇编语言编写一源程序,统计该数组中相邻两数间符号变换的次数,并将次数存放在NUM单元中。
cld
lea si,ARRAY ;取数组ARRAY地址
mov cx,100 ;数组元素个数
mov NUM,0 ;计数器清零
lodsb ;读入第一个数组元素至累加器al
dec cx
and al,80h ;保留符号位,屏蔽掉其余各位
rol al,1 ;循环左移一位,符号位进入第0位
mov ah,al ;作为相邻两数间符号是否变换的比较对象
Count:lodsb ;读入一个数组元素至累加器al
and al,80h
rol al,1
xor ah,al ;相邻两元素符号位异或,相同则0,相异则1
add NUM,ah ;计数
mov ah,al ;保存当前元素符号位
loop Count ;循环,处理下一个元素
; -----------------------------------------
3,编程:从AA单元开始的30个连续单元中存放有30个无符号数,从中找出最大数送入BB单元中,试编程。
假设这30个无符号数都是字节元素。
cld
lea si,AA
lodsb ;装入第一个元素,作为最大数初值
mov cx,29
Compare:
cmp al,[si]
jae $+4 ;当前最大数>=当前元素
mov al,[si] ;当前最大数<当前元素,更新最大数
inc si
loop Compare
mov BB,al ;最大数送BB单元
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询