文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言第十章答案

汇编语言第十章答案

汇编语言第十章答案
汇编语言第十章答案

10.1写出指令,选择显示方式10H,并将背景设为绿色。

答:MOV AH,00H

MOV AL,10H;选择显示方式10H(16色图形)

INT10H

MOV AH,10H

MOV AL,00H

MOV BH,10H;背景设为绿色(02H也可以,是用DEBUG调试出来的)

MOV BL,0;选择0号调色板

INT10H

设置背景色也可用:

MOV AH,0BH;设置背景色和调色板

MOV BH,0;设置背景色功能

MOV BL,8;绿色背景

INT10H

10.2如何使用INT10H的功能调用改变显示方式?

答:在AH中设置功能号00H,在AL中设置显示方式值,调用INT10H即可。

10.3VGA独有的一种显示方式是什么?

答:像素值为640×480,可同时显示16种颜色,这种显示方式(12H)是VGA独有的。10.4对于EGA和VGA显示适配器,使用显示方式13H时(只有VGA有),显示数据存在哪里?

答:显示数据存在显示存储器里。

10.5对于VGA的显示方式13H时存放一屏信息需要多少字节的显存?

答:需要64000个字节。

10.6利用BIOS功能编写图形程序:设置图形方式10H,选择背景色为蓝色,然后每行(水平方向)显示一种颜色,每4行重复一次,一直到整个屏幕都显示出彩条。

答:程序如下:

TITLE https://www.wendangku.net/doc/4015542482.html,

codeseg segment

assume cs:codeseg,ds:codeseg,ss:codeseg

org100h

main proc far

mov ah,00h

mov al,10h;选择显示方式10h(16色图形)

int10h

mov ah,0bh

mov bh,00h

mov bl,01h;背景设为蓝色

int10h

mov ah,0bh

mov bh,01h

mov bl,00h;设置调色板0#

int10h

mov bx,0;显存的第0页

mov cx,0;起始列号为0列

line:mov ah,0ch;写像素点

mov al,bl

int10h

inc cx

cmp cx,640

jne line

mov cx,0;起始列号为0列

inc bl

and bl,03h;只显示四种颜色(因此保留最低两位)

inc dx

cmp dx,350

jne line

int20h

main endp

codeseg ends

end main

10.7修改10.6题的程序,使整个屏幕都显示出纵向的彩条。答:程序如下:

TITLE https://www.wendangku.net/doc/4015542482.html,

codeseg segment

assume cs:codeseg,ds:codeseg,ss:codeseg

org100h

main proc far

mov ah,00h

mov al,10h;选择显示方式10h(16色图形)

int10h

mov ah,0bh

mov bh,00h

mov bl,01h;背景设为蓝色

int10h

mov ah,0bh

mov bh,01h

mov bl,00h;设置调色板0#

int10h

mov bx,0;显存的第0页

mov cx,0;起始列号为0列

mov dx,0;起始行号为0行

line:mov ah,0ch;写像素点

mov al,bl

int10h

inc dx

cmp dx,350

jne line

inc bl

and bl,03h;只显示四种颜色(因此保留最低两位)

inc cx

cmp cx,640

jne line

int20h

main endp

codeseg ends

end main

10.8按动键盘上的光标控制键,在屏幕上下左右任一方向上绘图,每画一点之前,由数字键0~3指定该点的颜色值,按动ESC键,绘图结束,返回DOS。

答:程序如下:

;DRAW—Program to draw on screen with sursor arrows

;For640*350color mode

up equ48h;向上键的扫描值

down equ50h;向下键的扫描值

left equ4bh;向左键的扫描值

right equ4dh;向右键的扫描值

escape equ1bh;“Esc”character

codeseg segment

main proc far

assume cs:codeseg

;clear screen by scrolling it,using ROM call

start:mov ah,06h

mov al,00h

mov cx,00h

mov dl,79

mov dh,24

int10h

;screen pointer will be in CX,DX registers;row number(0to350d)in DX

;coumn number(0to640d)in CX

mov ah,00h

mov al,10h;选择显示方式10h(16色图形)

int10h

mov ah,0bh

mov bh,00h

mov bl,01h;背景设为蓝色

int10h

mov ah,0bh

mov bh,01h

mov bl,00h;设置调色板0#

int10h

mov dx,175;设在屏幕中心

mov cx,320

;get character from keyboard

get_char:mov ah,0;键盘输入

int16h

cmp al,escape

jz exit

cmp al,33h;>‘3’吗?

jg plot

cmp al,30h;<‘0’吗?

jl plot

mov bl,al;是‘0’~‘3’,设置颜色

and bl,03

jmp get_char

;figure out which way to go,and draw new line

plot:mov al,ah

cmp al,up

jnz not_up

dec dx

not_up:cmp al,down

jnz not_down

inc dx

not_down:cmp al,right

jnz not_right

inc cx

not_right:cmp al,left

jnz write

dec cx

;use ROM routine to write dot,reguires row#in DX,col in CX,color in AL

write:mov al,bl

mov ah,0ch

int10h

jmp get_char

exit:int20h

main endp

codeseg ends

end start

10.9位屏蔽寄存器的作用是什么?在16色,640×480显示方式中如何使用位屏蔽寄存器?答:位屏蔽寄存器的作用是决定了新的像素值产生的方法。当位屏蔽寄存器的某位设为0时,相对应的像素值直接由锁存器写入显存;位屏蔽寄存器的某位为1时,所对应的像素值由锁存器中的像素值与CPU数据或置位/重置寄存器中相应位合并之后产生。

10.10读映像选择寄存器的作用是什么?如果4个位面的内容都需要读取,读映像选择寄存器应如何设置?

答:读映像选择寄存器的作用是用于选择哪一个位面的字节读入CPU。读映像选择寄存器的0和1位,用来指定哪个位面的锁存器内容读到CPU。如果4个位面的内容都需要读取,则

必须对同一地址执行4次读操作,在每次读之前,用指令分别设置读映像选择寄存器。10.11编写程序使一只“鸟”飞过屏幕。飞鸟的动作可由小写字母v(ASCII码76H)变为破折号(ASCII码0C4H)来模仿,这个字符先后交替在两列显示。鸟的开始位置是0列20行,每个字符显示0.5秒,然后消失。

答:程序段如下:

TITLE Flier.EXE;飞鸟程序

;******************************************

DSEG SEGMENT;定义数据段

BIRD DB76H,07;小写字母v及属性

DB0C4H,07;破折号及属性

DSEG ENDS;以上定义数据段

;******************************************

CSEG SEGMENT;定义代码段

MAIN PROC FAR

ASSUME CS:CSEG,DS:DSEG

START:PUSH DS;设置返回DOS

SUB AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX;给DS赋值

MOV AH,0FH;取当前显示方式

INT10H

PUSH AX;保存当前显示方式(AL)

MOV AH,0;设置彩色80×25文本方式

MOV AL,3

INT10H

MOV DH,20;20行

MOV DL,0;0列

BEGIN:MOV SI,2;字符v和破折号“-”交替显示

MOV CX,1;一次显示一个字符及属性

LEA DI,BIRD

DISP:CMP DL,79;飞到79列就退出

JAE EXIT

MOV AH,2;置光标位置

INT10H

MOV AH,9;在光标位置显示字符及属性

MOV AL,[DI];取显示字符及属性

MOV BL,[DI+1]

INT10H

CALL DELAY;延时0.5秒

MOV AH,9;在光标位置显示字符及属性

MOV AL,‘’;显示空格,擦除该位置的字符

MOV BL,7

INT10H

INC DL;飞到下一列

ADD DI,2

DEC SI

JNZ DISP

JMP BEGIN

EXIT:POP AX;恢复当前显示方式(AL)

MOV AH,0

INT10H

RET;返回DOS

MAIN ENDP

;----------------------------------------------------------------------------------

DELAY PROC NEAR;延时0.5s子程序

PUSH CX

PUSH DX

MOV DX,50;延时0.5s

DEL1:MOV CX,2801;延时10ms

DEL2:LOOP DEL2

DEC DX

JNZ DEL1

POP DX

POP CX

RET

DELAY ENDP;DELAY子程序结束

;----------------------------------------------------------------------------------

CSEG ENDS;以上定义代码段

;******************************************

END START;汇编语言源程序结束

10.12ASCII码为0DDH

ASCII码为0DCH

ASCII码为0DFH

ASCII码为0DBH

ASCII码为0DEH

用图形文本的方法设计“Name=XXX”(X为你自己姓名的缩写),并将其数据编码定义在一个数组中。

答:用图形文本的方法设计“NAME=YQS”的程序和数组如下:

显示格式如下:

S h o o t i n g

TITLE NAME_YQS.EXE;显示“NAME=YQS”的程序

;******************************************

;Graphics block message for the words shooting NAME=YQS

;00H→end of massage,0FFH→end of screen line

DSEG SEGMENT;定义数据段

NAME_YQS DB2;Start row(开始行)

DB2;Start column(开始列)

DB10000011B;Color attribute

DB‘Shooting’,0FFH,0FFH;显示“Shooting”

DB7DUP(0DCH),0FFH,0FFH

;Graphics encoding of the word NAME=YQS using IBM character set

DB0DEH,0DBH,4DUP(20H),0DBH,0DDH,20H,0DBH,0DFH,0DBH

DB20H,20H,0DBH,5DUP(20H),0DBH,20H,2DUP(0DFH,0DBH)

DB8DUP(20H),0DFH,0DBH,20H,20H,0DBH,0DFH,20H,20H

DB3DUP(0DBH),3DUP(20H),3DUP(0DBH),0DCH,0FFH

DB0DEH,0DBH,0DBH,3DUP(20H),0DBH,0DDH,2DUP(20H,0DBH)

DB20H,20H,0DBH,0DBH,3DUP(20H),0DBH,0DBH,20H,20H,0DBH DB11DUP(20H),3DUP(0DBH,20H,20H),20H,0DBH,20H,0DBH

DB3DUP(20H),0DFH,0FFH

DB0DEH,0DBH,20H,0DBH,20H,20H,0DBH,0DDH,2DUP(20H,0DBH) DB20H,4DUP(20H,0DBH),20H,20H,0DBH,0DCH,0DBH,20H

DB7DUP(0DFH),3DUP(20H,20H,0DBH),3DUP(20H),0DBH,20H,0DBH DB3DUP(0DCH),20H,0FFH

DB0DEH,0DBH,20H,20H,0DBH,20H,0DBH,0DDH,20H,0DBH,0DFH DB0DBH,4DUP(20H,20H,0DBH),20H,0DFH,20H,7DUP(0DCH),20H DB20H,0DFH,0DBH,0DBH,0DFH,20H,20H,0DBH,3DUP(20H),0DBH DB20H,20H,3DUP(0DFH),0DBH,0FFH

DB0DEH,0DBH,3DUP(20H),0DBH,0DBH,0DDH,2DUP(20H,0DBH),20H DB20H,0DBH,5DUP(20H),2DUP(0DBH,20H,20H),10DUP(20H),0DBH DB0DBH,3DUP(20H),0DBH,20H,0DCH,20H,0DBH,20H,0DCH

DB3DUP(20H),0DBH,0FFH

DB0DEH,0DBH,4DUP(20H),0DBH,0DDH,0DCH,0DBH,20H,0DBH

DB0DCH,20H,0DBH,5DUP(20H),0DBH,20H,2DUP(0DCH,0DBH)

DB9DUP(20H),0DCH,0DBH,0DBH,0DCH,3DUP(20H),0DFH,0DFH

DB0DBH,20H,20H,0DFH,3DUP(0DBH),20H,0FFH

DB00;结束显示标志

START_COL DB?

DSEG ENDS;以上定义数据段

;******************************************

;Text display procedures:display a message on the graphics screen

CSEG SEGMENT;定义代码段

MAIN PROC FAR

ASSUME CS:CSEG,DS:DSEG

START:PUSH DS;设置返回DOS

SUB AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX

LEA DI,NAME_YQS

MOV DH,[DI];Get row into DH

INC DI;Bump pointer

MOV DL,[DI];And column into DL

MOV START_COL,DL;Store start column

MOV AH,2;Set cursor position

MOV BH,0;Page0

INT10H

INC DI;Bump pointer to attribute

MOV BL,[DI];Get color code into BL

Char_write:INC DI;Bump to message start

MOV AL,[DI];Get character

CMP AL,0FFH;End of line?

JE BUMP_ROW;Next row

CMP AL,0;Test for terminator

JE END_TEXT;Exit routine

CALL SHOW_CHAR

JMP CHAR_WRITE

END_TEXT:RET;返回DOS

Bump_row:INC DH;Row control register

MOV DL,START_COL;Column control to start column

MOV AH,2;Set cursor position

MOV BH,0;Page0

INT10H

JMP CHAR_WRITE

MAIN ENDP

;----------------------------------------------------------------------------------;Display character in AL and using the color code in BL

Show_char PROC NEAR;显示字符子程序

MOV AH,9;BIOS service request number

MOV BH,0;Page0

MOV CX,1;No repeat

INT10H

;Bump cursor

INC DL

MOV AH,2;Set cursor position

MOV BH,0;Page0

INT10H

RET

Show_char ENDP;SHOW_CHAR子程序结束

;----------------------------------------------------------------------------------

CSEG ENDS;以上定义代码段

;******************************************

END START;汇编语言源程序结束

10.13游戏程序常常用随机数来控制其图形在屏幕上移动。请编写一程序,用随机数来控制笑脸符(ASCII码02H)显示的位置。笑脸符每次显示的列号总是递增1。而行的位置可能是前次的上一行,下一行或同一行,这根据随机数是0、1或2来决定,当行号变为0、24或列号变为79时显示结束。笑脸在每个位置上显示0.25s。(提示:INT1AH的AH=0是读当前时间的功能调用,利用该功能返回的随时都在变化的时间值作为产生随机数的基数。)

答:程序段如下:

TITLE Disp_Laugh.EXE;笑脸显示程序

;******************************************

CSEG SEGMENT;定义代码段

MAIN PROC FAR

ASSUME CS:CSEG

START:PUSH DS;设置返回DOS

SUB AX,AX

PUSH AX

MOV AH,0FH;取当前显示方式

INT10H

PUSH AX;保存当前显示方式(AL)

MOV AH,0;设置彩色80×25文本方式

MOV AL,3

INT10H

MOV CX,1;一次显示一个笑脸字符及属性

MOV DH,12H;12行,从屏幕左边的中间开始

MOV DL,0;0列

BEGIN:CMP DL,79;移到79列就退出

JAE EXIT

CMP DH,0;移到第0行就退出

JBE EXIT

CMP DH,24;移到第24行就退出

JAE EXIT

MOV AH,2;置光标位置

INT10H

MOV AH,9;在光标位置显示字符及属性

MOV AL,02H;取笑字符及属性

MOV BL,7

INT10H

CALL DELAY;延时0.25秒

MOV AH,9;在光标位置显示字符及属性

MOV AL,‘’;显示空格,擦除该位置的字符

MOV BL,7

INT10H

INC DL;移到下一列

PUSH DX

MOV AH,0;读当前时间,CH:CL=时:分,DH:DL=秒:1/100秒

;产生随机数基数

INT1AH

MOV AX,DX

POP DX

AND AL,03H;随机数为1/100秒的最低两位

JZ DOWN;随机数的最低两位为0则下降一行

CMP AL,1

JNZ LEVEL;随机数的最低两位为≥2则水平移动

DEC DH;随机数的最低位为1则上跳一行

JMP BEGIN

DOWN:INC DH

LEVEL:JMP BEGIN

EXIT:POP AX;恢复当前显示方式(AL)

MOV AH,0

INT10H

RET;返回DOS

MAIN ENDP

;----------------------------------------------------------------------------------

DELAY PROC NEAR;延时0.25s子程序

PUSH CX

PUSH DX

MOV DX,25;延时0.25s

DEL1:MOV CX,2801;延时10ms

DEL2:LOOP DEL2

DEC DX

JNZ DEL1

POP DX

POP CX

RET

DELAY ENDP;DELAY子程序结束

;----------------------------------------------------------------------------------

CSEG ENDS;以上定义代码段

;******************************************

END START;汇编语言源程序结束

10.14分配给PC机主板上的8253/54定时器的端口地址是什么?

答:8253/54定时器的3个独立计数器Counter0、Counter1和Counter2的端口地址分别为40H、41H和42H。8253/54内部还有一个公用的控制寄存器,端口地址为43H。

10.158253/54定时器的三个计数器,哪一个用于扬声器?它的端口地址是什么?

答:8253/54定时器的计数器Counter2用于扬声器,它的端口地址为42H。

10.16下面的代码是利用监控端口61H的PB4来产生延迟时间的,它适用于所有的286、386、

Pentium PC及兼容机。请指出该程序的延迟时间是多少?

MOV DL,200

BACK:MOV CX,16572

WAIT:IN AL,61H

AND AL,10H

CMP AL,AH

JE WAIT

MOV AH,AL

LOOP WAIT

DEC DL

JNZ BACK

答:该程序的延迟时间是200×16572×15.08μs=49981152μs≈50s。

10.17在PC机上编写乐曲程序“Happy Birthday”,乐曲的音符及音频如下:歌词

音符

音频

节拍

歌词

音符

音频

节拍

歌词

音符

音频

节拍

hap

C

262

1/2

day

C

262

1

so

D

294

3

py

C

262

1/2

to

392 1 hap Bb 466 1/2 birth D 294 1 you F 349 2 py Bb 466 1/2 day C 262 1 hap C 262 1/2 birth A 440 1

to F 349 1 py C 262 1/2 day C

1 you E 330

2 birth D 294 1

to G 392 1 hap C 262 1/2 day A 440 1 you F 349 2 py C 262 1/2 dear F 349 1 birth D

1

so

E

330

1

答:程序如下:

TITLE MUSIC—A music of‘Happy Birthday’;连接时需加上GENSOUND程序EXTRN SOUNDF:FAR;SOUNDF是外部过程——通用发声程序

;******************************************

STACK SEGMENT PARA STACK‘STACK’;定义堆栈段

DB64DUP(‘STACK…’)

STACK ENDS;以上定义堆栈段

;******************************************

DSEG SEGMENT PARA‘DATA’;定义数据段

MUS_FREQ DW262,262,294,262,349,330,262,262,294,262,392,349,262,262 DW294,440,349,330,294,466,466,440,262,392,349,-1

MUS_TIME DW25,25,50,50,50,100

DW25,25,50,50,50,100

DW25,25,50,50,50,50,150

DW25,25,50,50,50,100

DSEG ENDS;以上定义数据段

;******************************************

CSEG SEGMENT PARA‘CODE’;定义代码段

ASSUME CS:CSEG,DS:DSEG,SS:STACK

MUSIC PROC FAR

PUSH DS;设置返回DOS

SUB AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX;给DS赋值

LEA SI,MUS_FREQ;取发声的频率(音阶)表首地址

LEA BP,MUS_TIME;取发声的节拍(时间)表首地址

FREQ:MOV DI,[SI];读取频率值

CMP DI,-1;歌曲结束了吗?

JE END_MUS

MOV BX,DS:[BP];读取节拍

CALL SOUNDF;调通用发声子程序

ADD SI,2

ADD BP,2

JMP FREQ

END_MUS:RET;返回DOS

MUSIC ENDP

CSEG ENDS;以上定义代码段

;******************************************

END MUSIC;汇编语言源程序结束

以下是SOUNDF——外部的通用发声子程序(教材392页)TITLE SOUNDF——通用发声子程序

;****************************************** PUBLIC SOUNDF;定义为公共过程

;******************************************

CSEG1SEGMENT PARA‘CODE’;定义代码段ASSUME CS:CSEG1

SOUNDF PROC FAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH DI

MOV AL,0B6H;写定时器8253的工作方式

OUT43H,AL

MOV DX,12H;根据频率求8253的计数值,即533H*896/freq MOV AX,533H*896;(DX),(AX)=123280H=533H*896

DIV DI;(DI)=freq

OUT42H,AL;向8253送计数值

MOV AL,AH

OUT42H,AL

IN AL,61H;取8255的PB口当前内容,并保护

MOV AH,AL

OR AL,3;开始发声,PB1=1,PB0=1

OUT61H,AL

WAIT1:MOV CX,663;延时(BX)×10ms

CALL WAITF

MOV AL,AH

AND AL,0FCH;停止发声,PB1=0,PB0=0

OUT61H,AL

POP DI

POP DX

POP CX

POP BX

POP AX

RET

SOUNDF ENDP

;******************************************

WAITF PROC NEAR

PUSH AX

WAITF1:IN AL,61H

AND AL,10H

CMP AL,AH

JE WAITF1

MOV AH,AL

LOOP WAITF1

POP AX

RET

WAITF ENDP

CSEG1ENDS;以上定义代码段

;******************************************

END

10.18编写用键盘选择计算机演奏歌曲的程序。首先在屏幕上显示出歌曲名单如下:

A MUSIC1

B MUSIC2

C MUSIC3

当从键盘上输入歌曲序号A,B或C时,计算机则演奏所选择的歌曲,当在键盘上按下0键时,演奏结束。

答:程序段如下:

MUS_LST DB‘A MUSIC1’,0DH,0AH

DB‘B MUSIC2’,0DH,0AH

DB‘C MUSIC3’,0DH,0AH

DB‘0END’,0DH,0AH,‘$’

MOV AH,09;显示字符串的DOS功能调用

LEA DX,MUS_LIST

INT21H

INPUT:MOV AH,1;键盘输入一个字符的DOS功能调用

INT21H

CMP AL,‘0’;结束演奏吗?

JE EXIT

OR AL,00100000B;变为小写字母

CMP AL,‘a’;演奏歌曲a吗?

JNZ B0

CALL MUSIC1;去演奏歌曲A

JMP INPUT

B0:CMP AL,‘b’;演奏歌曲b吗?

JNZ C0

CALL MUSIC2;去演奏歌曲B

JMP INPUT

C0:CMP AL,‘c’;演奏歌曲c吗?

JNZ INPUT

CALL MUSIC3;去演奏歌曲C JMP INPUT

EXIT:RET;返回

汇编语言第二章答案

2.1 在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号。试问可直接由指令指定的I/O端口数。 答:可直接由指令指定的I/O端口数为256个。 2.2 有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。 答:存储器里的存放情况如右下图所示: 000B0H E5H 000B1H 1EH 000B2H 000B3H 3CH 000B4H 2AH 2.3在IBM PC机的存储器中存放信息如右下图所示。试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。 30020H 12H 30021H 34H 30022H ABH 30023H CDH 30024H EFH 答:30022H字节单元的内容为ABH;30024H字节单元的内容为EFH。30021H字单元的内容为AB34H;30022H字单元的内容为CDABH。 2.4 在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢? 答:3017:000A、3015:002A和3010:007A的存储单元的物理地址都是3017AH。 2.5 如果在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0) (IP)=2B40H,试问该程序的第一个字的物理地址是多少? 答:该程序的第一个字的物理地址是0AAA40H。 2.6在实模式下,存储器中每一段最多可有10000H个字节。如果用调试程序DEBUG的r命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OF、SF、ZF、CF的值。 C>debug -r AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC 答:此时存储器分段的示意图如右图所示。OF、SF、ZF、CF的值都为0。 2.7 下列操作可使用那些寄存器?

汇编语言试题及参考答案

汇编语言试题及参考答案 一,填空题 1.ZF标志位是标志结果是否为零的,若结果,ZF为( 1 ),否则ZF为( 0 ).当ZF为1时,SF为( 0 ) 2.标号可以有两种类型属性.它们是( )和( ) 3.8位无符号整数的表示范围为0--255,写成16进制形式为( ),8位有符号整数的表示范围为-128--+127,写成16进制形式为( ) 4.伪指令DB,GROUP 和NAME 三个标号名字域必须有名字的是( ),不得有名字的是( ),可有可无名字的是( ). 5.循环程序通常由( )( )( )和循环结果外理四部分构成 6.在数值不达式中,各种运算符可可混合使用,其优先次序规则*,/( )于+,-;XOR,OR( )于AND,LT( )于GT 7. 宏指令定义必须由伪指令( )开始,伪指令( )结束,两者之间的语句称为( ) 8.调用程序与子程序之间的参数传递方法有四种,即堆栈法( )( )( ) 9.分别用一条语句实现下述指明的功能 (1)栈顶内容弹出送字变量AYW( ) (2)双字变量AYD存放的地址指针送ES和SI( ) (3)变量AY2类型属性送AH( ) (4)不允许中断即关中断( ) (5)将字符串'HOW ARE YOU!'存入变量AYB( ) (6)子程序返回调用程序( ) (7)地址表达式AYY[4]的偏移地址送字变量ADDR( ) (8)AX的内容加1,要求不影响CF( ) (9)BX的内容加1,要求影响所有标志位( ) (10)若操作结果为零转向短号GOON( ) 二,单选题 1.IBM PC微机中,有符号数是用( )表示的 1.原码 2.补码 3.反码 4.BCD码 2.把汇编源程序变成代码程序的过程是( ) 1.编译 2.汇编 3.编辑 4.链接

第4章汇编语言程序设计.

第四章习题集 一、判断 (正确的在括号画“√” , 错误的画“×” 1. 汇编语言程序语言必须由四部分组成。 ( 2. 汇编语言源程序中所使用的变量,必须在代码段中先定义,后引用。 (错 3. 在汇编语言中,一般伪指令语句放在代码段中 (错 4. 逻辑操作符 AND 、 OR 、 XOR 或 NOT ,只能用于数字表达式。 ( 错 5. 符号定义语句不占内存单元,变量定义语句占内存单元。 ( 6. 汇编语言源程序中至少有一个代码段。 ( 对 7. 伪指令是指示性语句 , 不产生机器目标代码。( √ 8. 伪指令BV AR :DB ‘ ABCD ’ , 200 DUP(?是合法伪指令。 9. 伪指令 DAT1 DB 7, 8, 9, 10 与 DA T1 DW 07H, 08H , 09H , 0AH 所预置的数据是一样的。 10. 8086CPU 的中断向量表共占有 1024个字节 (00000H -003FFH , 所以共有1024个中断。 [ ] 二、单项选择题 1. 用高级语言编写的程序(C 。 A 、只能在基本种计算机上运行 B 、无需经过编译或解释,即可被计算机直接执行 C 、具有通用性和可移植性 D 、几乎不占用内存空间 2. 一般地,我们将计算机指令的集合称为(B 。 A . 机器语言 B. 汇编语言 C. 模拟语言 D. 仿真语言

3. 我们通常所说的“裸机”指的是(C 。 A. 只装备有操作系统的计算机 B. 不带输入输出设备的计算机 C. 未装备任何软件的计算机 D. 计算机主机暴露在外 4. 计算机的软件系统一般分为(C 两大部分。 A. 系统软件和应用软件 B. 操作系统和计算机语言 C. 程序和数据 D. DOS 和 Windows 5. 计算机系统软件中的汇编程序是一种 ( C 。 A. 汇编语言程序 B. 编辑程序 C. 翻译程序 D. 将高级语言转换成汇编程序的程序 6. 假设 V1和 V2是用 DW 定义的变量,下列指令中正确的是:A A. MOV V1,20H B. MOV V1, V2 C. MOV AL,V1 D. MOV 2000H , V2 7. PC 机所使用的标准键盘向主机发送的代码是 A A . ASCII 码 B . 扫描码 C. BCD 码 D. 格雷码 8. 8086CPU 中断号为 8的中断矢量存放在(C 。 A. 0FFFFH :0008H B. 0000H :0008H C. 0000H :0020H D. 0020H :0000H 9. 已知变量 VAR 为字型,则 TYPE VAR=(B 。 A 、 1 B 、 2 C 、 3 D 、 4

汇编语言王爽第二版课后答案

第一章基础知识 检测点(第8页) ---------------------- (1) 13 (2) 1024,0,1023 (3) 8192,1024 (4) 2^30,2^20,2^10 (5) 64,1,16,4 (6) 1,1,2,2,4 (7) 512,256 (8) 二进制 注意: 1.第4题中的符号'^'指求幂运算(如: 2^30指2的30次方) 第二章寄存器(CPU工作原理) 检测点(第18页) ---------------------- (1)写出每条汇编指令执行后相关寄存器中的值。第一空:F4A3H 第二空:31A3H 第三空:3123H 第四空:6246H 第五空:826CH 第六空:6246H 第七空:826CH 第八空:04D8H 第九空:0482H 第十空:6C82H 第十一空:D882H 第十二空:D888H 第十三空:D810H 第十四空:6246H (2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解答如下: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点(第23页) ---------------------- (1)00010H,1000FH (2)1001H,2000H 第2题说明: 因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。 检测点(第33页) ----------------------答:CPU修改了4次IP的值。 情况如下: 第1次:执行完mov ax,bx后 第2次:执行完sub ax,ax后 第3次:读入jmp ax后 第4次:执行完jmp ax后 最后IP的值为0 实验1 查看CPU和内存,用机器指令和汇编指令编程(第33页) ----------------------------------------------------- 1.预备知识:Debug的使用 <此部分略> 2.实验任务(第43页) (1) <此部分略> (2) <此部分略> (3) 通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在内存ffff:0005~ffff:000C(共8个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’属性。 (4) 通过向内存中的显存写入数据,使计算机根据写入的数据进行ASCII转换,并将转换后且可打印的字符输出到屏幕上。<注:关于显存的详细讨论不在此题范围> 第三章寄存器(内存访问) 检测点(第52页) ---------------------- (1)(题目:略) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。

汇编语言第6章答案

第6章流程控制 习题1. 指令指针EIP是通用寄存器还是专用寄存器?有指令能够直接给它赋值吗?哪些指令的执行会改变它的值? 解答:EIP是专用寄存器,不能通过指令直接给它赋值。可以改变其值的指令有:(1)无条件分支,包括:跳转(jmp)、调用(call)、中断(int)。 (2)条件分支,与标志位CF、OF、PF、SF、ZF相关的条件跳转指令。 (3)循环指令,LOOP、LOOPE等。 3. 相对于BASIC语言中GOTO语句作用的IA-32处理器指令是哪条? 跳转指令jmp 习题4. IA-32处理器通过改变EIP寄存器的数值就可以改变程序,如果程序需要无条件跳转到标号done位置执行,使用“MOVL done, %EIP”语句是否可以达到,为什么?如果不能实现该功能,应该使用哪条指令? 解答:不能。不能对EIP寄存器直接赋值。使用指令jmp done可以实现。 习题6 条件转移指令Jxx所利用的条件保存在何处?有多少个不同条件的转移指令? 保存在EFLAGES寄存器中 共16个(P107) 习题7 JA和JG指令发生跳转的条件都是“大于”,它们有什么区别? 在处理带符号值和无符号值时有所区别。计算无符号值时,使用JA,对于带符号值,使用JG。 习题8. 执行如下程序片断后,CMP指令分别使得5个状态标志CF、ZF、SF、OF和PF为0还是为1?它会使得哪些条件转移指令条件成立、发生转移? movl $0x20, %eax movl $0x80, %ebx cmpl %ebx,%eax 解答:CF=1 ZF=0 SF=1 OF=0 PF=1 可以使得发生转移的指令有:JC JS JP JNZ JNO 习题9. 有如下程序片断,请使用一条指令代替其中的两条指令: (1) again: ... jz next jmp again next: (2) again: ... jle next

汇编语言课后习题答案---郑晓薇(整理后的)

习题一 1 无符号数: 11010011=211=D3H,01110111=119=77H, 10000011=131=83H, 00101111=47=2FH, 10101010=170=AAH 带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H, 00101111=+47=2FH,10101010= -86=AAH 2 5E8AH,0BE6H,3DEH,4940H 3 00011101+00110101=01010010=5 2H=82 01001001+11101000=00110001=3 1H=49 10111110+01010010=00010000=1 0H=16 10011010+11110001=10001011=8 BH= -117 4 00101001+01010011=01111100+0 0000110=10000010=82H=82 01110011-00100100=01001111-00000110=01001001=49H=49 01100110+00011000=01111110+0 0000110=10000100=84H=84 10010+01110101=00111+0000011 0 =00111=0207H=207 5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H 6 无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码 (2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255 (3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码 (4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码 8 (1) 108=01101100B=6CH,补码01101100B,压缩BCD码01000,ASCII 码313038H (2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H (3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H (4) 254=11110B=00FEH,补码11110B,压缩BCD码10100,ASCII 码323534H 9 (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0 (2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0 (3) -74+29=11010011B,CF=0, SF=1,ZF=0,OF=0 (4) -92-37=01111111B,CF=1, SF=0,ZF=0,OF=1 10 回车、换行、响铃、ESC键、空格键、、P、p 习题二 9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节) 10 CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP 11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12 对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。 13 首单元的物理地址=38AE8H,末单元的物理地址 =38AE8H+7FFFH=40AE7H 16 (1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H (2)和(3)的物理地址是一样的。说明逻辑地

汇编语言复习题(附答案)

汇编语言复习题 注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。在此文档最后最后附有课 后四、六章的答案,大家抓紧时间复习哦! 一、选择题 1. 把要执行的程序与库文件连接起来形成可执行文件的系统程序是(B )。 A. 汇编程序 B. 连接程序 C. 机器语言程序 D.源代码程序 2. 在8088/8086的寄存器组中,CPU确定下一条指令的物理地址时需要用到的寄存器对是 (C )。 A..SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 3. 为了使主机访问外设方便起见,外设中的每个寄存器给予一个(C )。 A.物理地址 B. 逻辑地址 C. 端口地址 D. 段地址 4. MOV AX, 3064H,该指令中源操作数采用的寻址方式是(A )。 A.立即 B. 直接 C. 寄存器相对 D. 寄存器间接 5. 换码指令的助记符是(C )。 A. XCHG B. LEAS C.XLAT D. MOV 6. 如果A> B (A、B有符号数)发生转移,应选择的条件转移指令是(JGE )。 7. 下列符号中,可用作标识符的是(C )。 A.MOV B.AX C.MSG1 D.1ABC 8. X DB 10H DUP (1 , 2)内存变量定义语句拥有了( A )个字节的存储空间。 A.20D B.10D C.20H D.10H 9. 当DF=0时,执行串操作指令MOVSB变址寄存器SI、DI的值将(C )。 A.不变 B. 减1 C. 加1 D. 无法确定 10. 如下指令可将AX寄存器内容改变的是(A )。 A. AND AX , BX B . TEST AX , BX C. CMP AX , BX D . XCHG AX , AX 11.16位CPU支持的I/O 地址范围是(D )。 A. 0~0FFFFFH B. 0~0FFFFH C. 0~0FFFH D. 0~0FFH 12. MUL CL指令实现的功能是(A )。 A.无符号乘法:AX AL X CL B.有符号乘法:AX AL X CL C.无符号乘法:DX AL X CL D .有符号乘法:DX AL X CL 13. DOS系统功能调用(INT 21H )中,显示字符串的功能号是(D )。 A.01H B.02H C.08H D. 09H 14. 在16位CPU读取指令时,需要用到的寄存器对是(C )。 A.SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 15. 下列指令中,源操作数(既第2操作数)属于基址加变址寻址方式是(B )。 A.MOV AX,23H B. MOV AX,[BX+SI] C.SUB AX,[BX] D. ADD AX,BX 16. 有内存变量定义语句:VAR DW 10 DUP(1 , 2), 1234H, VAR的属性TYPE LENGTH和

汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计第四版 【课后习题答案】--囮裑為檤第4章基本汇编语言程序设计 〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。 〔解答〕 思路:首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位字节。传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成: .model small .stack 256 .data qvar dq 1234567887654321h .code .startup mov cx,7 mov si,1 again: mov al, byte ptr qvar[si] mov byte ptr qvar[si-1],al inc si loop again test al,80h jz ezz mov bl,0ffh jmp done ezz: mov bl,0 done: mov byte ptr qvar[7],bl .exit 0 end 〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。 〔解答〕 思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。 .model small .stack 256 .data qvar dq 1234567887654321h

.code .startup mov dx, 7 ;外循环次数 mov ax, byte ptr qvar[0] ;最低位字节送ax lpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF位mov si, 1 mov cx, 7 ;内循环次数 again: rcl byte ptr qvar[si], 1 ;高位字节依次左移P50 inc si loop again dec dx jnz lpp .exit 0 .end 〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。 〔解答〕 思路:设这四组从低位到高位分别放在AL、BL、CL和DL寄存器中。仅列出代码段:mov bl, al ;将al中的两组分开 and al, 0fh ;屏蔽高四位后送al mov cl, 4 ;原al中的数据逻辑右移4次送bl shr bl, cl mov dl, ah ;将ah中的两组分开 and dl, 0f0h ;屏蔽低高四位后送dl mov cl, 4 ;原ah中的数据逻辑右移4次送dl shr dl, cl mov cl, ah ;屏蔽高四位后送cl and cl, 0fh 〔习题4.4〕编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。 〔解答〕 getkey: mov ah, 1 ;从键盘输入,出口:al存键值 int 21h cmp al, 'a' ;判键值是小写字母? jb getkay cmp al, 'z' ja getkay sub al,20h ;是小写字母转换为大写字母 mov dl,al mov ah, 02h ;显示 int 21h 〔习题4.5〕已知用于LED数码管显示的代码表为:

汇编语言第八章答案18

8.1 写出分配给下列中断类型号在中断向量表中的物理地址。(1) INT 12H (2) INT 8答:(1) 中断类型号12H 在中断向量表中的物理地址为00048H 、00049H 、0004AH 、0004BH ;(2) 中断类型号8在中断向量表中的物理地址为00020H 、00021H 、00022H 、00023H 。8.2 用CALL 指令来模拟实现INT 21H 显示字符T 的功能。答:MOV AH, 2MOV DL, ‘T’PUSH DS PUSHF ;因中断服务程序的返回指令是IRET ,而不是RET MOV BX, 0MOV DS, BX CALL DWORD PTR[21H*4] ;用CALL 指令调用21H 的中断服务程序POP DS 8.3 写出指令将一个字节数据输出到端口25H 。答:指令为:OUT 25H, AL 8.4 写出指令将一个字数据从端口1000H 输入。答:指令为: MOV DX, 1000H IN AX, DX 8.5 假定串行通讯口的输入数据寄存器的端口地址为50H ,状态寄存器的端口地址为51H ,状态寄存器各位为1时含义如右图所示,请编写一程序:输入一串字符并存入缓冲区BUFF ,同时检验输入的正确性,如有错则转出错处理程序ERROR_OUT 。输入数据准备好 7 6 5 4 3 2 1 0输出寄存器空 奇偶校验错溢出错格式错8.3 状态寄存器各位含义答:程序段如下: MOV DI, 0 MOV CX, 80 ;最多输入80个字符 BEGIN: IN AL, 51H ;查询输入是否准备好? TEST AL, 02H JZ BEGIN IN AL, 50H ;输入数据并存入缓冲区BUFF MOV BUFF[DI], AL 、管路敷设技术通过管线敷设技术不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内,强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

完整版汇编语言试题及答案..doc

一,单项选择题 (每小题 1 分,共 20 分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令 JMP FAR PTR DONE 属于 ( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是 ( A.对两个无符号数进行比较采用CMP 指令 ,对两个有符号数比较用CMP S 指令 B.对两个无符号数进行比较采用CMPS 指令 ,对两个有符号数比较用CM P 指令 C.对无符号数条件转移采用JAE/JNB 指令 ,对有符号数条件转移用JGE/J NL 指令 D.对无符号数条件转移采用JGE/JNL 指令 ,对有符号数条件转移用JAE/J NB 指令 3.一个有 128 个字的数据区 ,它的起始地址为 12ABH:00ABH, 请给出这个数据区最末一个字单元的物理地址是 ( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中 ,不正确的是 ( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是 ( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令 JNE 的测试条件为 ( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为 ( A.BX 或 CX

汇编语言程序设计(第四版)第1_4章【课后答案】

汇编语言程序设计第四版 【课后习题答案】 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电

后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。 〔习题1.4〕汇编语言与高级语言相比有什么优缺点? 〔解答〕 汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。 汇编语言与高级语言相比的缺点:由于与处理器密切相关导致通用性差、可移植性差,汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,编写汇编语言比较繁琐,调试起来也比较困难,编译程序产生的目标程序往往比较庞大、程序难以优化,运行速度慢。 〔习题1.5〕将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH

1632位微机原理汇编语言及接口技术第八章课后习题答案

习题8.4 中断请求寄存器IRR 保存8条外界中断请求信号IR0~IR7的请求状态 Di位为1表示IRi引脚有中断请求;为0表示无请求 中断服务寄存器ISR 保存正在被8259A服务着的中断状态 Di位为1表示IRi中断正在服务中;为0表示没有被服务 中断屏蔽寄存器IMR 保存对中断请求信号IR的屏蔽状态 Di位为1表示IRi中断被屏蔽(禁止);为0表示允许 习题8.6 某时刻8259A的IRR内容是08H,说明IR3引脚有中断请求。某时刻8259A 的ISR内容是08H,说明IR3正在被中断服务,其它不被处理。在两片8259A级连的中断电路中,主片的第5级IR5作为从片的中断请求输入,则初始化主、从片时,ICW3的控制字分别是 20H 和 05H 。 习题8.9 普通全嵌套方式: 8259A的中断优先权顺序固定不变,从高到低依次为IR0、IR1、IR2、……IR7; 中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线; 在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套。 普通中断结束方式: 配合全嵌套优先权方式使用; CPU用输出指令往8259A发出普通中断结束EOI命令; 8259A就会复位正在服务的中断中优先权最高的ISR位。 习题8.13 int08h proc far ;远过程 sti ;开中断,允许中断嵌套 push ds ;现场保护 push ax push dx …… ;日时钟计时

…… ;控制软驱马达 int 1ch ;调用指令中断1CH mov al,20h ;发送EOI命令(00100000B,D4D3=00,说明是OCW2) out 20h,al pop ax ;现场恢复 pop dx pop ds iret ;中断返回

汇编语言习题-测验题答案

汇编语言各章习题、测试题答案 习题一 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数 01110111 00101111 十六进制运算 1A52H+4438H 3967H-2D81H 37H×12H 1250H×4H 将十进制数变为8位补码并做运算(结果用二进制、十六进制、十进制表示) 29+53 73-24 -66+82 -102-15 用压缩BCD码计算(结果用二进制、BCD码、十进制表示) 29+53 73-24 66+18 132+75 符号位扩展(字节扩展为字,字扩展为双字) 20A3H 94H 3456H 7FH EC00H 若机器字长为16位,其无符号数表示范围是多少带符号数表示范围是多少分别用十进制和十六进制表示。 写出下列十六进制数所能代表的数值或编码: (1)38H (2)FFH (3)5AH (4)0DH 将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码: (1)108 (2)46 (3)-15 (4)254 写出下列算式的8位二进制运算结果,标志位CF、SF、ZF、OF分别是什么值 (1)56+63 (2)83-45 (3)-74+29 (4)-12-37 查表,指出ASCII码0DH、0AH、07H、1BH、20H、60H、50H、70H对应的控制字符。 测验一 单选题: 1.已知X=76,则[X]补= 。 A. 76H B. 4CH 2.已知[X]补=80H,则X= 。 A. 80H B. 0 C. 0FFH D. -80H 3.已知[X]补=98H,则[X]补/2= 。 A. 0CCH C. 49H D. 31H 4.已知X=78,Y=-83,则[X+Y]补= 。 A. 0F5H B. 0A1H C. 0FBH D. 65H 5.将124转换成十六进制数的结果是 A. 7CH B. 7DH C. 7EH D. 7BH 6.将93H看成一个压缩BCD码,其结果是 A. B. C. D. 7. 45转换成二进制数是 A. C. 00101101 D. 8.6CH转换成十进制数是 A. 118 B. 108 C. 48 D. 68 9.将93H扩展为字的结果是 A. FF93H B. 0093H C. 1193H D. 1093H

汇编语言试题及答案.

一,单项选择题(每小题1分,共20分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令JMP FAR PTR DONE属于( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是( A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMP S指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CM P指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/J NL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/J NB指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中,不正确的是( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为( A.BX或CX

B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节 9.执行如下程序:( MOV AX,0 MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT 执行后(BX=( A.99

第4章习题 汇编语言程序设计(单片机第二版)

第四章习题与参考答案 4.1程序设计语言有哪三种?各有什么异同?汇编语言有哪两类语言?各有什么特点? 4.2在汇编语言程序设计中,为什么要采用标号来表示地址?标号的构成原则是什么?使用标号有什么限制?注释段起什么作用? 4.3MCS-51汇编语言有哪几条常用伪指令?各起什么作用?

4.4汇编语言程序设计分哪几步?各步骤的任务是什么? 4.5汇编语言源程序的机器汇编过程是什么?第二次汇编的任务是什么? 4.6请用除法指令编写例4.2的程序,并计算所占内存字节数和所需机器周期数。 4.7设内部RAM20H单元有两个非零的BCD数,请编写求两个BCD数的积并把积送入21H单元的程序。 4.8已知,从内部RAM BLOCK单元开始存放有一组带符号数,数的个数存放在LED单元。请编写

可以统计其中正数和负数个数并分别存入NUM和NUM+1单元的程序。 4.9设自变量X为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单元。请编写满足如下关系的程序: X>=50时:Y=X; 50>X>=20时:Y=5X; X<20时:Y=2X;

4.10在例4.6的128分支程序中,若用LJMP指令代替AJMP指令,以便分支程序可以放在64KB地址范围的任务位置。请修改原程序,修改后的程序最多可实现多少个分支? 4.11从外部RAM的SOUCE(二进制8位)开始有一数据块,该数据块以$字符结尾。请编写程序,

把它们传送到以内部RAM的DIST为起始地址的区域($字符也要传送)。 4.12在例4.11中,若SOUCE为二进制16位,则程序又该如何编。 4.13在外部RAM的低256地址单元区,有起始地址为SOUCE且长度存放在LEN单元的数据块。请编写能对它们进行奇偶校验的程序。凡满足奇校验(奇数个1)的数据均送到内部RAM起始地址为DIST 的存储区。

汇编语言程序设计(第二版) 钱晓捷 课后答案

汇编语言程序设计(第二版)钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2 (1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.5 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.7 W=X+Y+24-Z 2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax

相关文档
相关文档 最新文档