编程论坛's Archiver

shooterboy 发表于 2007-11-29 11:25

汇编考试题目求解

马上就要汇编考试了,很多题目都不会做,那位大侠能帮忙看一下啊!求解啊!!
判断题,下面两个是正确的还是错误的?
1.MOV  SI,[SI]
2.OUT  [BX],AL
四、程序分析
1.执行完程序后,回答指定的问题。
MOV AX,0
MOV BX,2
MOV CX,50
LP: ADD AX,BX
ADD BX,2
LOOP LP
问:(1)该程序的功能是(                        )。
   (2)程序执行完成后,(AX)=(          )。
2.执行完程序后,回答指定的问题。
MOV AX,200H
MOV BX,500H
MOV [BX+10H],30H
ADD    AX,[BX+10H]
LEA    SI,[BX+10H
MOV BX,AX
问:该程序段执行后,SI=(          )。BX=(             )。

[font=宋体][size=10.5pt]六、填语句[/size][/font][size=10.5pt][/size]
[font=Times New Roman]1[/font][font=宋体].从键盘输入一个十六进制数码,转换成二进制数放入[/font][font=Times New Roman]HEXNUM[/font][font=宋体]单元,在括号上填入适当的语句。[/font]
[font=宋体]HEXNUM   DB   ?
MOV   AH,(  )        
INT     21H
CMP    AL,39H
NEXT    (   )        
SUB      AH,(  )        
NEXT: SUB  AL,30H
MOV  HEXNUM,AL
HLT[/font]

[font=Times New Roman]
[/font][font=Times New Roman]2[/font][font=宋体].已知从[/font][font=Times New Roman]BUF[/font][font=宋体]单元起存有若干带符号数,将其中的正数找出并存入[/font][font=Times New Roman]PLUS[/font][font=宋体]单元,负数存入[/font][font=Times New Roman]MINUS[/font][font=宋体]单元,把下列程序填充完整。[/font]
[font=Times New Roman]DATA SEGMENT
BUF DB 12,-2,3,4,-80,-1,6,8,-11,-23
CN  EQU $-BUF
PLUS DB CN DUP(?)
MINUS DB CN DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV DI,OFFSET PLUS
MOV BX,OFFSET MINUS
MOV CX,  (  )     
NEXT: MOV AL,[SI]
INC  SI
TEST AL,80H
(  )      PP
MOV [DI],AL
INC (   )     
JMP LP
PP: MOV [BX],AL
(   )  BX
LP: (   )  NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START
[/font]
[font=宋体][size=10.5pt]七、程序设计[/size][/font][size=10.5pt][/size]
[font=Times New Roman]1[/font][font=宋体].大小写字母互换[/font]
[font=宋体]([/font][font=Times New Roman]1[/font][font=宋体])设内存数据区有大小写混合英文[/font][font=Times New Roman]ASCII[/font][font=宋体]字母。将其转换为全部大写和全部小写,并在屏幕显示这[/font][font=Times New Roman]3[/font][font=宋体]种字母。字母显示用[/font][font=Times New Roman]DOS[/font][font=宋体]功能[/font][font=Times New Roman]9[/font][font=宋体]号调用。[/font]
[font=宋体]([/font][font=Times New Roman]2[/font][font=宋体])程序算法:大小写英文字母互换,查[/font][font=Times New Roman]ASCII[/font][font=宋体]码字符表可知,字母[/font][font=Times New Roman]A~Z[/font][font=宋体]的[/font][font=Times New Roman]ASCII[/font][font=宋体]码是[/font][font=Times New Roman]41H~5AH[/font][font=宋体],字母[/font][font=Times New Roman]a~z[/font][font=宋体]的[/font][font=Times New Roman]ASCII[/font][font=宋体]码是[/font][font=Times New Roman]61H~7AH[/font][font=宋体]。两种字母转换只需加减[/font][font=Times New Roman]20H[/font][font=宋体]即可。[/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]
[font=Times New Roman] [/font]

[[italic] 本帖最后由 shooterboy 于 2007-11-29 11:39 编辑 [/italic]]

永夜的极光 发表于 2007-11-29 14:05

我来试试


判断题,下面两个是正确的还是错误的?
1.MOV  SI,[SI] 对
2.OUT  [BX],AL  不大清楚,out的目的操作数,好像只能是立即数和dx,所以我猜这个是错的
四、程序分析
1.执行完程序后,回答指定的问题。
MOV AX,0
MOV BX,2
MOV CX,50
LP: ADD AX,BX
ADD BX,2
LOOP LP
问:(1)该程序的功能是( 计算2+4+6+.....+100 )。
   (2)程序执行完成后,(AX)=( 2550  )。
2.执行完程序后,回答指定的问题。
MOV AX,200H
MOV BX,500H
MOV [BX+10H],30H  这一句有问题吧
ADD    AX,[BX+10H]
LEA    SI,[BX+10H
MOV BX,AX
问:该程序段执行后,SI=(510H)。BX=(500H)。

六、填语句
1.从键盘输入一个十六进制数码,转换成二进制数放入HEXNUM单元,在括号上填入适当的语句。
HEXNUM   DB   ?
MOV   AH,(01H)        
INT     21H
CMP    AL,39H
( jbe  )  NEXT
SUB      AH,(6H)        
NEXT: SUB  AL,30H
MOV  HEXNUM,AL
HLT


2.已知从BUF单元起存有若干带符号数,将其中的正数找出并存入PLUS单元,负数存入MINUS单元,把下列程序填充完整。
DATA SEGMENT
BUF DB 12,-2,3,4,-80,-1,6,8,-11,-23
CN  EQU $-BUF
PLUS DB CN DUP(?)
MINUS DB CN DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF
MOV DI,OFFSET PLUS
MOV BX,OFFSET MINUS
MOV CX,  (CN)     
NEXT: MOV AL,[SI]
INC  SI
TEST AL,80H
(jnz)      PP
MOV [DI],AL
INC (di)     
JMP LP
PP: MOV [BX],AL
(inc)  BX
LP: (loop)  NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START

上面写的我都没有在编译器上测试过,所以不保证正确,后面两个程序都挺简单的,LZ自己练练手吧

[[italic] 本帖最后由 永夜的极光 于 2007-11-29 14:11 编辑 [/italic]]

wubizao 发表于 2007-11-29 15:01

OUT  [BX],AL  ?
这个是错误地
OUT 是端口写命令
对于端口号0~FFH
可以直接写OUT 15H,al/ax        ;al或者ax传输数据
对于端口号>256号时候
写OUT DX,al/ax                      ;先把端口号存入DX中

shooterboy 发表于 2007-11-30 09:58

[em01] ,谢谢各位的帮忙,小弟就要上战场了,希望能过关哦

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.