BEGIN:IN AL, 5FH ;开始程序,将5F端口的值存入AL
TEST AL,80H ;测试AL是否为80H
JZ BRCH1 ;如果为80,跳转到BRCH1
MOV AH, 0 ;将AH存入0
JMP STOP ;跳转到STOP(暂停命令)
BRCH1 : MOV -AH,0FFH ;BRCH1:将ff存入AH
STOP: HLT ;暂停程序
很简单啊,当端口5F值不为80h的时候,AH不就为0了吗
汇编语言2005—2006学年第二学期期末考试复习题及参考答案
一、 填空
1 十进制数369转换成二进制数为()2,转换成十六进制数为()16
2 计算机中的指令由( )和( 地址码 )两部分组成。
3 8086的地址总线有20根,寻址范围为( )字节。
4 下一条将要执行的指令的地址存放在寄存器( )中。
5 写出IBM PC机的三种子程序返回的指令(RET), (IRET),(IRETD)。
6 汇编语言源程序需经过()程序汇编,( )程序连接才能生成可执行文件。
7 存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=()
8 REP指令前缀与()指令配合使用。
9 在显示器上查看和修改内存单元的内容可以使用DEBUG的( )和( )命令。
10 (AL)=BFH,要求屏蔽第0,1两位,则要执行指令( );如果要求第0,1位变反,可使用指令( )
11 宏汇编适合于(),()的子功能段使用;
二、 选择题
1 设字长N=16,有符号数7AE9H的补码表示为( )
A. 9EA7H B 76C4H C 8417H D 7AE9H
2 比较有符号数3260H与0B425H的大小关系为( )
A 相等 B 小于 C 大于 D 不能比较
3 指令JMP WORD PTR [BX][DI]中转移的目标地址为( )
A.16 d x(DS)+(BX)+(DI) B.16d x(ES)+(BX)+(DI)
C.16d x(SS)+(BX)+(DI) D.16d x(CS)+(BX)+(DI)
4 在指令 MOV AX,[1000H]中,源 *** 作数的寻址方式为( )
A.立即寻址 B.直接寻址 C.段内间接寻址 D.寄存器寻址
5 中断矢量表中存放的是( )
A 中断类型号 B 断点地址 C 中断服务程序 D 中断服务程序入口地址
6 8086 的汇编语言指令系统中的条件转移指令可以使程序转移到( )
A 段内的任何地方 B 距该指令偏移地址为-32768~+32767的地方
C 距该指令偏移地址为-128~+127的地方 D 段外
7 能定义ASCII码字符串的数据定义语句有( )
A DB,DW,DD,DQ,DT B DB,DW,DD C DB, DW D DB;
8 若(AL)=87H,执行ADD AL,0F5H后,S,Z,C,O,P的状态为( )
A.SF=0,ZF=0,CF=1,OF=1,PF=0 B.SF=1,ZF=0,CF=1,OF=0,PF=1
C.SF=0,ZF=0,CF=0,OF=1,PF=0 D.SF=1,ZF=0,CF=1,OF=1,PF=1
9 比较指令CMP( )
A 专用于有符号数比较 B 专用于无符号数比较
C 专用于串比较 D 不区分比较的对象是有符号数还是无符号数
10 数据传送指令对标志位的影响为( )
A.都不影响; B.都影响;
C.除了SAHF,POPF,其它均不影响 D.除了控制标志位,其它均不影响
三、 判断题
( )31 段间调用的子程序必须由伪 *** 作FAR说明为远过程。
( )32 PC机以位作最小寻址单位。
( )33 当SRC是立即数时,DST可以使用存储器寻址。
( )34 指定各个逻辑段偏移地址可以使用ORG伪指令。
( )35 LOOPE/LOOPZ是相等/为零时转移到标号,其退出条件是(CX)=0或ZF=0。
( )36 POP IP
( )37 设327FH和0BFFFH为有符号数的补码表示,则327FH < 0BFFFH
( )38 多个模块间的符号交叉引用要用伪指令PUBLIC和EXTRN说明
( )39 MOV AX,VAR1-VAR2+100
( )40 ADD [SI],50
四、 程序分析题
1 A DW 1234H
B DW 5678H
PUSH A
PUSH B
POP A
POP B
试回答:上述程序段执行后(A)= ,(B)=
2 分析下面程序段,
MOV AL,200
SAR AL,1
MOV BL,AL
MOV CL,2
SAR AL,CL
ADD AL,BL
试问程序段执行后(BL)= (AL)=
3 STRING DB ‘ABCDEFGHIJ'
MOV AH,01 ;从键盘输入字符1~9
INT 21H
AND AL,0FH
DEC AL
XOR AH,AH
MOV BX,OFFSET STRING
ADD BX,AX
MOV BL,[BX]
MOV AH,02H ;显示输出
INT 21H
试回答:
(1)上述程序段的功能是什么?
(2)如从键盘输入字符‘4',程序段有什么结果?
4 有如下程序:
AND AL,AL
JZ BRCH1
RCR AL,1
JZ BRCH2
RCL AL,1
INC AL
JZ BRCH3
上述程序运行后,试回答:
(1)当(AL)=时,程序转向BRCH1
(2)当(AL)=时,程序转向BRCH2
(3)当(AL)=时,程序转向BRCH3
5 下列程序段完成什么工作
DAT1 DB 30 DUP()
DAT2 DB 10 DUP()
┇
MOV CX,10
MOV BX,20
MOV SI,0
MOV DI,0
NEXT:MOV AL,DAT1〔BX〕〔SI〕
MOV DAT2〔DI〕,AL
INC SI
INC DI
LOOP NEXT
6 下面程序段执行完以后,AL的内容是什么
MOV BX,00FFH
AND BX,0FFFH
OR BX,0F0FH
XOR BX,00FFH
7 执行下列指令后,AX寄存器中的内容是什么
START DW 10H,20H,30H,40H,50H
EE1 DW 3
┇
MOV BX,OFFSET START
ADD BX,EE1
MOV AX,〔BX〕
8 试分析下面程序段的功能是什么
CMP AL,‘A’
JC OTHER
CMP AL,‘Z’+1
JNC OTHER
JMP LETTER
┇
OTHER: ┇
LETTER: ┇
五、 程序填空题
1 设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。
TEST AX,8000H
MOV PLW,BX
JMP DONE
K1:
DONE:
2 现有下列数据段:
DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL'
COUNT EQU -STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
__ __
LOOP:MOVSB
__ __
LOOP LOP
或者()
六、 程序设计题
1 编程序段计算SUM=∑ai=a1+a2++a20,已知a1a20依次存放在以BUF为首址i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)
2 设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。
数据段如下:
DATA SEGMENT
DAT DB XXH
SQRTAB DB 0,1,4,9,81
SQR DB?
DATA ENDS
3 试编写出把DX、AX中的双字右移四位的程序段。
4 定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。
汇编语言2005—2006学年第二学期期末考试复习题及参考答案
一、 填空
1 十进制数369转换成二进制数为(101110001)2,转换成十六进制数为(171)16
2 计算机中的指令由( *** 作码 )和( 地址码 )两部分组成。
3 8086的地址总线有20根,寻址范围为( 1M )字节。
4 下一条将要执行的指令的地址存放在寄存器( 指令指针寄存器 )中。
5 写出IBM PC机的三种子程序返回的指令(RET), (IRET),(IRETD)。
6 汇编语言源程序需经过(汇编)程序汇编,( 连接 )程序连接才能生成可执行文件。
7 存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=(27272H)
8 REP指令前缀与()指令配合使用。
9 在显示器上查看和修改内存单元的内容可以使用DEBUG的( D )和( E )命令。
10 (AL)=BFH,要求屏蔽第0,1两位,则要执行指令( AND AL,3F );如果要求第0,1位变反,可使用指令( XOR AL,3F )
11 宏汇编适合于(程序短),(参数多)的子功能段使用;
二、 选择题
1 设字长N=16,有符号数7AE9H的补码表示为( D )
A. 9EA7H B 76C4H C 8417H D 7AE9H
2 比较有符号数3260H与0B425H的大小关系为( C )
A 相等 B 小于 C 大于 D 不能比较
3 指令JMP WORD PTR [BX][DI]中转移的目标地址为( A )
A.16 d x(DS)+(BX)+(DI) B.16d x(ES)+(BX)+(DI)
C.16d x(SS)+(BX)+(DI) D.16d x(CS)+(BX)+(DI)
4 在指令 MOV AX,[1000H]中,源 *** 作数的寻址方式为( B )
A.立即寻址 B.直接寻址 C.段内间接寻址 D.寄存器寻址
5 中断矢量表中存放的是( D )
A 中断类型号 B 断点地址 C 中断服务程序 D 中断服务程序入口地址
6 8086 的汇编语言指令系统中的条件转移指令可以使程序转移到( A )
A 段内的任何地方 B 距该指令偏移地址为-32768~+32767的地方
C 距该指令偏移地址为-128~+127的地方 D 段外
7 能定义ASCII码字符串的数据定义语句有( D )
A DB,DW,DD,DQ,DT B DB,DW,DD C DB, DW D DB;
8 若(AL)=87H,执行ADD AL,0F5H后,S,Z,C,O,P的状态为( C )
A.SF=0,ZF=0,CF=1,OF=1,PF=0 B.SF=1,ZF=0,CF=1,OF=0,PF=1
C.SF=0,ZF=0,CF=0,OF=1,PF=0 D.SF=1,ZF=0,CF=1,OF=1,PF=1
9 比较指令CMP( D )
A 专用于有符号数比较 B 专用于无符号数比较
C 专用于串比较 D 不区分比较的对象是有符号数还是无符号数
10 数据传送指令对标志位的影响为( D )
A.都不影响; B.都影响;
C.除了SAHF,POPF,其它均不影响 D.除了控制标志位,其它均不影响
三、 判断题
( )31 段间调用的子程序必须由伪 *** 作FAR说明为远过程。 T
( )32 PC机以位作最小寻址单位。 F
( )33 当SRC是立即数时,DST可以使用存储器寻址。 F
( )34 指定各个逻辑段偏移地址可以使用ORG伪指令。 T
( )35 LOOPE/LOOPZ是相等/为零时转移到标号,其退出条件是(CX)=0或ZF=0。T
( )36 POP IP F
( )37 设327FH和0BFFFH为有符号数的补码表示,则327FH < 0BFFFH F
( )38 多个模块间的符号交叉引用要用伪指令PUBLIC和EXTRN说明 T
( )39 MOV AX,VAR1-VAR2+100 F
( )40 ADD [SI],50 F
四、 程序分析题
1 A DW 1234H
B DW 5678H
PUSH A
PUSH B
POP A
POP B
试回答:上述程序段执行后(A)= 5678H ,(B)= 1234H
2 分析下面程序段,
MOV AL,200
SAR AL,1
MOV BL,AL
MOV CL,2
SAR AL,CL
ADD AL,BL
试问程序段执行后(BL)= 0E4H (AL)= 0DDH
3 STRING DB ‘ABCDEFGHIJ'
MOV AH,01 ;从键盘输入字符1~9
INT 21H
AND AL,0FH
DEC AL
XOR AH,AH
MOV BX,OFFSET STRING
ADD BX,AX
MOV BL,[BX]
MOV AH,02H ;显示输出
INT 21H
试回答:
(1)上述程序段的功能是什么? 根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。
(2)如从键盘输入字符‘4',程序段有什么结果? 显示器显示字符‘D’
4 有如下程序:
AND AL,AL
JZ BRCH1
RCR AL,1
JZ BRCH2
RCL AL,1
INC AL
JZ BRCH3
上述程序运行后,试回答:
(1)当(AL)=(AL)=0 时,程序转向BRCH1
(2)当(AL)=(AL)=1 时,程序转向BRCH2
(3)当(AL)=(AL)=-1 时,程序转向BRCH3
5 下列程序段完成什么工作 把DAT1+20存储单元开始的10个字节搬到DAT2开始的连续10个存储单元中
DAT1 DB 30 DUP()
DAT2 DB 10 DUP()
┇
MOV CX,10
MOV BX,20
MOV SI,0
MOV DI,0
NEXT:MOV AL,DAT1〔BX〕〔SI〕
MOV DAT2〔DI〕,AL
INC SI
INC DI
LOOP NEXT
6 下面程序段执行完以后,AL的内容是什么 0F00H
MOV BX,00FFH
AND BX,0FFFH
OR BX,0F0FH
XOR BX,00FFH
7 执行下列指令后,AX寄存器中的内容是什么 3000H
START DW 10H,20H,30H,40H,50H
EE1 DW 3
┇
MOV BX,OFFSET START
ADD BX,EE1
MOV AX,〔BX〕
8 试分析下面程序段的功能是什么 判断AL的内容,若为‘A’~‘Z’的大写字母时,程序转LETTER处理,否则转OTHER处理
CMP AL,‘A’
JC OTHER
CMP AL,‘Z’+1
JNC OTHER
JMP LETTER
┇
OTHER: ┇
LETTER: ┇
五、 程序填空题
1 设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。
TEST AX,8000H
JE K1或JZ K1
MOV PLW,BX
JMP DONE
K1: MOV PLW,AX
DONE:
2 现有下列数据段:
DATA SEGMENT
STR1 DB‘ABCDEFGHIJKL'
COUNT EQU -STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
__ CLD__
LOOP:MOVSB
__ SUB SI,2__
LOOP LOP
或者(STD/ADD DI,2)
六、 程序设计题
1 编程序段计算SUM=∑ai=a1+a2++a20,已知a1a20依次存放在以BUF为首址i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)
程序段:MOV AX,0
MOV BX,OFFSET BUF
MOV CX,20
LOP:ADD AX,[BX]
INC BX
INC BX
LOOP LOP
MOV SUM,AX
2 设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。
数据段如下:
DATA SEGMENT
DAT DB XXH
SQRTAB DB 0,1,4,9,81
SQR DB?
DATA ENDS
STACL1 SEGMENT PARA STACK
DW 20H DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
┇
CALL SUBROT
┇
MOV AH,4CH
INT 21H
SUBROT PROC
PUSH AX
PUSH BX
LEA BX,SQRTAB
MOV AL,DAT
TEST AL,80H
JNS NEXT
NEG AL
NEXT: XLAT SQRTAB
MOV SQR,AL
POP BX
POP AX
RET
SUBROT ENDP
CODE ENDS
END SRART
3 试编写出把DX、AX中的双字右移四位的程序段。
MOV CL,04
SHR AX,CL
MOV BL,DL
SHR DX,CL
SHL BL,CL
OR BL,AH
4 定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。
DATA SEGMENT
PATTERN DB 23H,24H,25H,26H
DISPLAY DB 80 DUP(‘ ’),‘$’
DATE ENDS
CODE SEGMENT
┇
CLD
LEA SI,PATTERN
LEA DI,DISPLAY
MOV CX,80
REP MOVSB
MOV AH,09H
LEA DX,DISPLAY
INT 21H
RET
CODE ENDS
1B
2C
3A
4A
5C
6无解
7A
8D
9D
10B(x没有定义)
11i=5,j=4,k=6
122048
13看不懂!- -|
144
15s++,k++,k<n
16
DATA SEGMENT\r\nBUF DB 32\r\n DB \r\n DB 32 DUP()\r\nDATA ENDS\r\nCODE SEGMENT\r\n ASSUME CS:CODE,DS:DATA\r\nSTART:MOV AX,DATA\r\n MOV DS,AX\r\n MOV DX,OFFSET BUF\r\n MOV AH,0AH\r\n INT 21H\r\n MOV BX,OFFSET BUF\r\n MOV AL,[BX]\r\n INC BX\r\n CMP AL,[BX]\r\n JAE NEXT\r\n MOV AL,[BX]\r\nNEXT: MOV DL,AL\r\n MOV AH,02H\r\n INT 21H\r\n MOV AH,4CH\r\n INT 21H\r\nCODE ENDS\r\n END START
首先你要知道什么什么是中断,以下用了2中中断,分别是16号和第10号中断。
16号中断 AH=00 从键盘接收一个字符
MOV AH,00
INT 16H
10号中断 AL=0AH
其中BH=显示页
AL=字符
CX=字符重复次数
MOV AH,0AH
MOV CX,00
MOV BH,00
INT 10H
就是先接收一个字符,然后在第0页第一行,输出1个字符。
一、编写程序,将一个包含20个元素的数组STRING分成一个偶数数组STRING1和一个奇数数组STRING2
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
STRING db 230,69,89,35,46,57,68,79,51,81,98,43,56,19,123,98,102,87,65,156
STRING1 db 20 dup(0) ;偶数数组
STRING2 db 20 dup(0) ;奇数数组
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
lea si,STRING ;取数组变量地址
lea di,STRING1 ;偶数数组地址
lea bx,STRING2 ;奇数数组地址
mov cx,20 ;元素个数
cld
Partition: lodsb ;读入一个元素
test al,1 ;偶数?
jnz $+5 ;不是
stosb ;保存到偶数数组
jmp $+5
mov [bx],al ;保存到奇数数组
inc bx
loop Partition
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
二、分析下面程序段的功能,并利用完整段定义框架或简化段定义框架将该程序段做成完整的程序,并通过CodeView看到实验结果。
MOV DX,0
LOP1:MOV AH1从键盘接收一个字符,字符的ASCII码在AL中
INT 21H
CMP AL,'$'
JZ NEXT
CMP AL,30H
JB LOP1
CMP AL,39H
JA LOP1
AND AL,0FH
ADD DL,AL
ADC DH,0
JMP LOP1
NEXT: HLT
1、程序功能
键盘输入字符,若为数字,将其转换成二进制数,然后累加到DX寄存器;否则,重新输入字符,直至输入字符为$,暂停。
2、完整程序
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
Start: push cs
pop ds ;使数据段与代码段同段
MOV DX,0
LOP1:MOV AH,1从键盘接收一个字符,字符的ASCII码在AL中
INT 21H
CMP AL,'$'
JZ NEXT
CMP AL,30H
JB LOP1
CMP AL,39H
JA LOP1
AND AL,0FH
ADD DL,AL
ADC DH,0
JMP LOP1
NEXT:HLT
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
以上就是关于下面程序段实现什么功能在什么情况下,其执行结果是AH=0全部的内容,包括:下面程序段实现什么功能在什么情况下,其执行结果是AH=0、求汇编期末考试题、C语言习题请高手帮忙解答。急。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)