搜档网
当前位置:搜档网 › 汇编语言程序设计课后答案

汇编语言程序设计课后答案

汇编语言程序设计课后答案

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

堆栈是一种按“先进后出”原则存取数据的存储区域。

堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。

2.5

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. 其他逻辑指令使

CF=OF=0, 根据结果影响其他标志位。

第2章(03)1. 左移N次相当于乘于2的N次方,右左移N次相当于除乘于2的N次方。

2. 移位指令根据是否移入“1”到CF,设置CF,根据移位后的结果影响

SF,ZF,PF。根据最高符号位是否改变设置OF,如改变OF=1.

3. … u ?表示无定义,… - ?表示无影响。

2.13; (1)

;不考虑进位mov bl,al

mov cl,3

shl al,cl

add al,bl ;shl bl,1

add al,bl

;考虑进位xor ah,ah

mov bx,ax

mov cl,3

shl ax,cl

add ax,bx ;shl bx,1

add ax,bx

(2)

数字0~9的ASCII码是:30h~39h 非压缩BCD码的0~9是:00h~09h 方法一:

and al,0fh ;实现ASCII到非压缩BCD码的转换

or al,30h ;实现非压缩BCD码到ASCII的转换

方法二:

xor al,30h ;求反D5D4位,其他不变

;即高4位为3,则变为0;高4位为0,则变为3

mov cl,4

again: shr dx,1 ;实现逻辑右移

;采用“sar dx,1”,则实现算术右移rcr ax,1

dec cl

jnz again

2.14; (1)用sar编写

2.20; 8086的条件转移的转移范围:在当前指令地址的+127---- -128之内。如条件转移的转移范围超出此范围,可在此范围内安排一条无条件转移,再转移到范围外的目标地址。

2.21; (1)JMP Bx ;转移的有效地址EA=BX=1256h

(2)JMP tABLE[Bx] ;转移的有效地址EA=[ds:20a1h+1256h]=[232f7]=3280h (3)JMP [Bx][si] ;转移的有效地址

EA=[ds:1256h+528fh]=264e5h=2450h

2.22; (1) xor ax,1e1eh

je equal

;AX=1e1eh(异或后为0)

(2)test al,10000001b

jnz there

;AL的D0或D7至少有一位为1 (3) cmp cx,64h

jb there

;CX(无符号数)< 64h

2.23;

mov cx,0 不循环,因为一进入循环就判cx=0? 如cx=0 就退出循环delay:loop delay

2.24; (1)若DX > DI,转到above执行

cmp dx,di

ja above ;=jnbe above

(2)若AX > SI,转到greater执行cmp ax,si

jg greater ;=jnle greater

(3)若CX = 0,转到zero执行

cmp cx,0 jcxz zero

jz zero

(4)若AX-SI产生溢出,转到overflow执行;

cmp ax,di

jo overflow

(5)若SI≤AX,转到less_eq执行;

cmp si,ax

cmp ax,si

jle less_eq

jge less_eq

(6)若DI≤DX,转到below_eq执行。

cmp di,dx

cmp dx,di

jbe below_eq

jae below_eq

2.25; 答:将首地址为array得20个字的数组求和,并将结果存入total 单元中。

2.26; (1)

mov si,0

mov dl,string[si] ;第1个字符送dl寄存器

mov si,5

mov dh,string[si] ;第6个字符送dh寄存器

(2)

xor si,si ;si清零

mov al,buffer[si] ;第一字节

inc si

mov ah,buffer[si] ;第二字节

mov cl,4

shl ah,cl ;BCD码移到高半字节

or al,ah ;组合成压缩BCD码

mov dl,al ;存入dl寄..

inc si

mov al,buffer[si] ;第三字节

inc si

mov ah,buffer[si] ;第四字节mov cl,4

shl ah,cl ;BCD码移到高半字节or al,ah ;组合成压缩BCD 码mov dh,al ;存入dh寄.. (3)

test dx,0f000h

jz zero

mov ax,-1

jmp done

zero: mov ax,0

done: ret

(4)

lea bx,buffer1

lea dx,buffer2

mov cx,8 ;8个字节

xor si,si ;si=0

clc ;CF=0

(5)

mov ax,0b800h

mov ds,ax ;段地址

xor si,si ;地址偏移量si=0

xor dx,dx ;和的高字dx=0 mov cx,99 ;加的次数

mov ax,[si] ;第一个数again: inc si ;指向下一个字单元inc si

add ax,[si] ;加下一个数

jnc noc ;无进位转

inc dx ;有进位dx=dx+1 noc: dec cx ;次数-1

jnz cx,again ;非0继续加

ret

(6)

mov si,offset string

mov cx,8000h ;

32k=2^15=8000h

again: cmp [si],?$?

jnz next

mov [si],20h ;if [si]=?$? [si]<-- ? ?

next: inc si

loop again

(7)

xor si,si ;si<--0

mov cx,100 ;循环次数again: dec array[si]

dec cx

jnz again

(8)

xor si,si ;si<--0

coun: cmp string[si],?$?

je done

inc si

jmp coun

done: ret 2..27; (1)使CF=

0 :clc ;and ax,ax ;or ax,ax

(2)使AX=0 :xor ax,ax ;and ax,0 ;mov ax,0

(3)同时使AX=0和CF=0:and ax,0 ;xor ax,ax ;sub ax,ax 2.29; 压缩BCD码加法:AX←AX+BX

出口参数:AX=BCD码和

2.24; okmsg db …OK?, …$?errmsg db …Error !

Overflow !?, …$?…

mov ax,X

sub ax,Y

jo overflow

mov dx,offset okmsg

jmp next

overflow: mov dx,errmsg

next: mov ah,9

int 21h

错误:

mov ax,X

sub ax,Y

jo overflow

mov dx,offset okmsg

okmsg db …OK?, …$?

mov dx,errmsg ;错误1:数据定义在代码中

mov ah,9

int 21h

overflow: errmsg db …Error ! Overflow !?, …$?

mov dx,errmsg ; 错误2:缺少JMP指令

mov ah,9

int 21h

2.37; ;xt237.asm

.model small

.stack

.data

array db 255

db 0

array1 db 255 dup('$')

array2 db 0dh,0ah,'$'

.code

.startup

mov ah,0ah ; 键盘输入字符串mov dx,offset array

int 21h

mov dx,offset array2 ; 回车换行mov ah,09h

int 21h

mov bx,offset array1

again: mov al,[bx]

cmp al,'$'

jz done

cmp al,'a' ; 小于a和大于z的字符不是小写字母

jb next

cmp al,'z'

ja next

sub al,20h ; 在a和z之间的字符才是小写字母,转换为大写

mov [bx],al ; 保存到原位置next: inc bx

jmp again

done: mov dx,offset array1

mov ah,09h

int 21h

.exit 0

end

第三章(01)

3.1; 硬指令:每个硬指令就是一个处理器指令,在CPU执行时产生相应功能;

伪指令:伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进行汇编。

3.2;

3.5; ⒈编辑文本编辑程序汇编语言源程序.asm

⒉汇编汇编程序目标模块文件.obj

⒊连接连接程序可执行文件.exe或.com

⒋调试调试程序应用程序

3.6; ;xt236.asm 简化段定义格式

.model small ;定义程序的存储模式(小模式)

.stack ;定义堆栈段(默认1024个字节)

.data ;定义数据段

str1 ab ?Input

Number:0~9 : ?,0dh,0ah,?$?

str2 ab ?Error!?,0dh,0ah,?$?

.cade ;定义代码段

.startup ;说明程序的起始点,建立ds,ss的内容。

mov ah,09h ;显示str1字符串

mov dx,offset str1

int 21h

gtekey: mov ah,1 ;调用BIOS判断按键功能

int 16h

jz getkey ;如zf = 0,无键按下,等待

cmp al,…0?;有键按下,键值与…0?比较

jb error ;如< …0?,出错处理

cmp al, …9 ?;有键按下,键值与…9?比较

ja error ;如〉…9?,出错处理

mov ah,02h ;调用DOS显示字符功能,显示该数字

mov dl,al

int 21h

.exit 0 ;终止程序执行,

返回DOS

error: mov ah,09h ;出错,调用DOS 功能显示str2字符串mov dx,offset str2

int 21h

jmp getkey ;等待按键

end ;汇编结束

3.7; ;xt307.asm

stack segment

dw 512 dup(?)

stack ends

data segment

array db 255

db 0

array1 db 255 dup('$')

array2 db 0dh,0ah,'$'

data ends

code segment 'code'

assume cs:code, ds:data, ss:stack start: mov ax,data mov ds,ax

mov ah,0ah ; 键盘输入字符串mov dx,offset array

int 21h

mov dx,offset array2 ; 回车换行mov ah,09h

int 21h

mov bx,offset array1

again: mov al,[bx]

cmp al,'$'

jz done

cmp al,'a' ; 小于a和大于z的字符不是小写字母

jb next

cmp al,'z'

ja next

sub al,20h ; 在a和z之间的字符才是小写字母,转换为大写mov [bx],al ; 保存到原位置next: inc bx

jmp again

done: mov dx,offset array1

mov ah,09h

int 21h mov ax,4c00h

int 21h

code ends

end start

3.9; (1) mov byte ptr [bx],1000 ;1000超出了一个字节范围

(2) mov bx,offset myword[si];

寄存器的值只有程序执行时才能确

定,

;而offset是汇编过程计算偏移地址,故无法确定

;可以改为lea bx,myword[si] (3) cmp mybyte1,mybyte2 ;两个都是存储单元,指令不允许

(4) mov al,mybyte1+mybyte2 ;变量值只有执行时才确定,汇编过程不

能计算

(5) sub al,myword ;字节量AL与字量myword,类型不匹配(6) jnz myword ;Jcc 指令只有相对寻址方式,不支持间接寻址方式

3.10; 前者为“与”操作硬指令助记符,可汇编成机器代码。

后者为逻辑运算符,在汇编时进行“与”运算,产生具体数值。

3.11; 注:对于逻辑运算,有关操作

数可化为二进制数。

(1)mov al,23h AND 45h OR

67h ; 67h

(2)mov ax,1234h/16 +

1Oh ; 133h

(3)mov ax,NOT(65535 XOR

1234h) ; 1234h

(4)mov al, LOW 1234h OR HIGH

5678h ; 76h

(5)mov ax,23h SHL

4 ; 0234h (6)mov ax, 1234h SHR

6 ; 0048h

(7)mov al,’a’ AND

(NOT(’a’-’A’)) ; 41h

(8)mov al,’H’ OR

00100000b ; 68h

(9)mov ax,(76543 LT 32768) XOR 7654h ; 7654h

3.12; 假设block开始的数据块有32

个字节数据:16个正数+100 (64h),16个负数 -48 (0doh)

分别连续分布:

block db 16 dup(100),16 dup (-48);也可以是任意字节数据,

随意分布。

dplus db 32

dup(?) ;为正

数预留存储空间

dminus db 32

dup(?) ;为负

数预留存储空间

count equ

32 ;字节数

3.15; mydataseg segment

my1b db ‘Personal Computer’

my2b db 20

my3b db 14h ;20h

my4b db 00010100b

my5w dw 20 dup(?)

my6c equ 100 ;my6c = 100 my7c equ mydataseg ends

3.18; 段地址:表示标号所在代码段

的段地址;

偏移地址:表示标号所在代码段的段

内偏移地址;

类型:引用该标号时,表示它所在同

一个段――near类型,还是另外一个段――far类型。

3.19; mydata segment

ORG lO0h

VARW DW l234H,5678H

VARB DB 3,4 AGLIN 4

VARD DD 12345678H

EVEN

BUFF DB 10 DUP(?)

MESS DB ’HELLO’

MOV AX, OFFSET VARB + OFFSET MESS ;AX = 4+16H = 1AH

MOV AX, TYFE TYPE BUFF+TYPE MESS+TYPE VARD;AX = 1+1+4 = 06H MOV AX,SIZE VARW+SIZE

BUFF+SIZE MESS;AX = 4+10+5 = 19 = 13H

MOV AX,LENGTH VARW + LENGTH VARD ;AX = 2+1 = 03H MOV AX,LENGTH BUFF + SIZE VARW ;AX = 10+4 =14 = 0EH MOV AX,TYPE

BIGIN ;AX =

FF02H (近)

MOV AX,OFFSET

BEGIN ;AX = 1BH

3.22; 段定义伪指令段名定

位组合类别组名

.CODE _TEXT WORD PUBLIC ’CODE’

.DATA _DATA WORD PUBLIC ’DATA’ DGROUP

.STACK STACK PARA S TACK ’STACK’ DGROUP

3.25; .model small

.stack

.data

num equ 5

datalist dw -1,0,2,5,4,?

.code

.startup

mov bx,offset datalist

mov cx,num

xor ax,ax

again: add ax,[bx]

inc bx

inc bx

loop again mov [bx],ax .exit 0 end

3.26; stack segment para ‘stack’ dw 512 dup(?) stack ends data segment dword array db 100 dup(?) data ends

code segment ‘code’ assume cs:code,ds:data,es:data,ss:stack org 100h start: mov ax,data mov ds,ax mov es,ax mov di,offset array mov al,64h mov cx,100 cld rep stosb mov ax,4c00h int 21h code ends end start 3.27;

解答

;xt327.asm

.model small

.stack 256 ;定义堆栈段大小为256个字节 .data

anum dd 11223344h ;定义两个双字的数(随意)

bnum dd 77553311h

sum dd ? ;定义结果,执行后为:88776655h

.code

.startup

xor si, si ;相对于变量的位移量清零 mov cx, 2 ;分高低字分别

相加,共两次

clc ;清零cf

again:mov ax, anum[si] ;取第一个数的一个字(先低字后高字)adc ax, bnum[si] ;取第二个数的一个字(先低字后高字)

mov sum[si], ax ;存和的一个字(先低字后高字) inc si ;修改位移量指向下一个字(加2)inc si loop again ;cx=cx-1 ,if cx<>0 ,jump again .exit 0 end 3.28; .startup xor si,

si ;位移量清零 mov al, bdata[si] ;取第一个数 mov cx, num-1 ;累加次数 again: inc si ;指向下一个数 adc al, bdata[si] ;累加loop again ;如未完,继续累加 mov sum, al ;完了,存结果.exit 0

end

4.3; 思路:设这四组从低位到高位分

别放在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 ah, 09h ;显示

int 21h

4.8; (1)将jmp table[bx]指令改为:mov dx, table[bx] (2)去掉源程序中:.exit 0---end之间的语句

4.17; .model small

.stack 256

.data

stri1 db ?plea se input

number:1--9?,odh,oah,?$?

.code

.startup

again: mov dx,offset stri1 ;显示stri1,提示输入

mov ah,09h

int 21h

mov ah,01h ;调用输入一个字符

int 21h ;输入一个字符存在al中

cmp al, ?1?;判该字符,如不在…1?--…9?

jb again ;重新输入

cmp al, ?9?

ja again

and al,0fh ;在…1?--…9?,屏蔽高4位

mov cx, al ;振铃次数送cx

.repeat

mov dl, 07h ;调用一次振铃

mov ah, 02h

int 21h

mov dx ,0ffffh ;延时

abc: dec dx

jnz abc

.untilcxz ;cx=cx-1,cx=0 退出

.exit 0

end

4.22;crazy PROC ;

crazy PROC

push ax ;

xor ax,ax ;xor ax,ax

xor dx,dx ;xor dx,dx again: add ax,[bx] ;again: add ax,[bx] adc dx,0 ;adc dx,0

inc bx ;inc bx

inc bx ;inc bx

loop again ;loop again

ret ;ret

ENDP crazy ;crazy ENDP 4.25;子程序中又调用子程序就形成子程序嵌套。

子程序中直接或间接调用该子程序本身就形成子程序递归。

4.26;.model small

.stack 256

.data

stdng db ?HeLLO eveRyboDy ! ? , 0 .code

.startup

mov bx, offset atring

again: mov al, [bx]

call chan ;调用过程

mov [bx] , al

next: inc bx

jmp again

done: .exit 0

chan proc ;大写转换为小

写字母的过程

or al, al

新版汇编语言程序设计习题答案(钱晓捷主编)电子教案

新版汇编语言程序设计习题答案(钱晓捷主 编)

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。

新版汇编语言程序设计习题答案(钱晓捷主编)

第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.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符 号数时,它们所表示的十进制数是什么? (1) D8 (2) FF 答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216; (2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。 1.7下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的 ASCII码时,它们所表示的十进制数及字符是什么? (1) 4F (2) 2B (3) 73 (4) 59 答:(1) 4FH表示的十进制数为 79,4FH表示的字符为O; (2) 2BH表示的十进制数为 43,2BH表示的字符为 +; (3) 73H表示的十进制数为115,73H表示的字符为s; (4) 59H表示的十进制数为89,59H表示的字符为Y。 1.8请写出下列字符串的ASCII码值。 For example, This is a number 3692. 答:46H 6FH 72H 20H 65H 78H 61H 6DH 70H 6CH 65H 2CH 0AH 0DH 54H 68H 69H 73H 20H 69H 73H 20H 61H 20H 6EH 75H 6DH 62H 65H 72H 20H 33H 36H 39H 32H 2EH 0AH 0DH

新版汇编语言程序设计习题答案(钱晓捷主编)

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。

IBM-PC汇编语言程序设计课后习题答案第二版doc

第一章 1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2 将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3 将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4 完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835

(3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0 (4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1 (6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么? (1) D8 (2) FF 答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216; (2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。 1.7 下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么? (1) 4F (2) 2B (3) 73 (4) 59 答:(1) 4FH表示的十进制数为 79,4FH表示的字符为O; (2) 2BH表示的十进制数为 43,2BH表示的字符为 +; (3) 73H表示的十进制数为115,73H表示的字符为s;

汇编语言程序设计习题答案

第一章微型计算机系统概述 1.3习题与综合练习 1.解释和区别下列名词术语 (1)微处理器(MP):具有中央处理器功能的大规模集成电路器件 微型计算机(MC) 微型计算机系统(MCS) (2)硬件:硬件是计算机系统的躯体,由控制器,运算器,存储器,输入设备,输出设备5大部分组成。 软件:软件是计算机的头脑和灵魂,可分为系统软件和应用软件。 (3)字节:8位二进制是一个字节。 字:16位二进制构成一个字。 字长:计算机的运算部件能同时处理的二进制数据的位数。 (4)指令指针:存放BIU要取的下一条指令的偏移地址。 指令寄存器: 指令译码器: 状态寄存器: (5)存储单元: 存储内容: 存储地址: 存储容量: (6)RAM: ROM: 软件固化: 2.冯·诺依曼计算机结构的特点是什么? (1)采用二进制数的形式表示数据和指令。 (2)将指令和数据存放在存储器中。 (3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5大部分组成。 3.件数计算机系统中复杂指令集和精简指令集的特点和用途。 复杂指令集(CISC):在微型计算机的体系结构组成结构上是以复杂指令为设计的计算机,在指令的运行过程中按指令的复杂程度来指挥计算机完成各条指令,由于各条指令复杂程度不同分配的时钟周期各不相同,执行指令所需时间就不相同。CISC体系的指令集由微程序来实现,即每一个操作由若干微操作的程序组合来实现。所以CISC可以使用微指令编程的方式实现多种和功能复杂的指令。 精简指令系统(RISC):不管计算机的指令如何复杂,在一个计算机时钟周期内完成,计算速度快,指令集简单。每一条指令直接有硬布线实现,即它的每条指令原则上有自己的一套逻辑时序电路直接实现,所以单条指令的实现所占用的硬件资源较多。因为该体系没有能采用增加单条指令的功能或高位的指令语义,也没有增加指令的条数,而是集中于它的精简指令集上。 4.CPU是计算机系统中的重要部件,试说明CPU的结构和功能。 微处理器是计算机中最关键的部件,由控制器,运算器,寄存器组和辅助部件组成。 控制器是硬件系统的指挥部,负责从存储器中取出指令,分析指令,确定指令类型并对指令进行译码,按时间先后顺序负责向其他各部件发出控制信号,保证各部件协调工作。运算器是用来进行算术运算和逻辑运算的元件。寄存器组用来存放计算所需的各种操作数,地址

汇编语言程序设计习题及答案

汇编语言程序设计习题及答案 汇编语言程序设计习题及答案 汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。虽然在现 代计算机编程中,高级语言如C、Java等更为常见,但了解汇编语言的基本原 理和编程技巧对于理解计算机底层工作原理和进行性能优化非常重要。本文将 介绍一些汇编语言程序设计的习题及其答案,帮助读者巩固和提升汇编语言编 程能力。 一、基础习题 1. 编写一个汇编程序,将存储器中的某个字节的值加1,并将结果存回原位置。答案: ```assembly MOV AL, [地址] INC AL MOV [地址], AL ``` 2. 编写一个汇编程序,计算存储器中一个数组的和,并将结果存放在指定的寄 存器中。 答案: ```assembly MOV CX, 数组长度 MOV BX, 数组首地址 MOV AX, 0

LOOP_START: ADD AX, [BX] ADD BX, 2 LOOP LOOP_START ``` 二、进阶习题 1. 编写一个汇编程序,实现字符串的逆序输出。答案: ```assembly MOV SI, 字符串首地址 MOV DI, 字符串尾地址 MOV CX, 字符串长度 DEC CX REVERSE: MOV AL, [SI] MOV AH, [DI] MOV [DI], AL MOV [SI], AH INC SI DEC DI LOOP REVERSE ```

2. 编写一个汇编程序,实现两个16位无符号整数的相乘,并将结果存放在指定的寄存器中。 答案: ```assembly MOV AX, 第一个数 MOV BX, 第二个数 MUL BX ``` 三、挑战习题 1. 编写一个汇编程序,实现一个简单的计算器,支持加法、减法、乘法和除法运算。 答案: ```assembly READ_INPUT: ; 读取用户输入 ; ... PARSE_INPUT: ; 解析用户输入,获取操作数和运算符 ; ... CALCULATE: ; 根据运算符进行相应的计算 ; ...

IBM-PC汇编语言程序设计课后习题答案(第二版 沈美明))

第五章 5、1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 答:程序段如下: BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用 INT 21H CMP AL, ‘a’ ;输入字符<‘a’不? JB STOP CMP AL, ‘z’ ;输入字符>‘z’不? JA STOP SUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可 MOV DL, AL ;显示一个字符的DOS调用 MOV AH, 2 INT 21H JMP BEGIN STOP: RET 5、2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符与后续字符,再按顺序显示这三个字符。 答:程序段如下: BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用 INT 21H CMP AL, ‘a’ ;输入字符<‘a’不? JB STOP CMP AL, ‘z’ ;输入字符>‘z’不?

DEC AL ;得到前导字符 MOV DL, AL ;准备显示三个字符 MOV CX, 3 DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用 INT 21H INC DL LOOP DISPLAY STOP: RET 5、3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL与DL中。 答:程序段如下: DSEG SEGMENT STORE DB 4 DUP (?) DSEG ENDS ┇ BEGIN: MOV CL, 4 ;右移四次 MOV CH, 4 ;循环四次 LEA BX, STORE A10: MOV DX, AX AND DX, 0FH ;取AX的低四位 MOV [BX], DL ;低四位存入STORE中 INC BX SHR AX, CL ;右移四次

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

4.1、判断下列标识符的合法性。 1)、code 合法 2)、Data 合法 3)、ABCDH 合法 4)、1abcH 不 5)、eax 不 6)、01 合法 7)、A?@ 合法 8)、www@zsu 合法 9)、***********.cn不 10)、AX$DX 合法 11)、_BX 合法 12)、CX 不 4.2、按下面要求写出相应的数据定义语句(未指定变量名的,可任意指定或省缺)。1)、定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节; DB 20,20 DUP(0) 2)、定义一个以0为结束符的字符串,其初值为:The course is easy; DB “The course is easy”,0 3)、定义一个以'$'为结束符的字符串,该串中含有换行符和回车符; DB 0D,0A,”$” 4)、定义100个字,其初值为0; DW 100 DUP(0) 5)、从一个偶地址开始定义一个字变量word; EVEN WORD DW ? 6)、先定义一个字符串String,其偏移量指定为10,其初值为"ABCDEF",然后再定义3个字类型的数组Data,要求String和Data的偏移量相同; ORG 10

STRING DB "ABCDEF" ORG 10 DATA DW 3 DUP(?) 7)、定义一个字符串String,其初值为"12345678",再定义4个字类型的数组Data,要求String和Data共享同一片内存单元; STRING DB "12345678" ORG $-8 DATA DW 4 DUP (?) 4.3、把下列C语言的变量定义语句改写成与之等价的汇编语言语句。 1)、char ch1, ch2[3], ch3[]="Are you ready?", ch4='Q'; CH1 DB ? CH2 DB 3 DUP (?) CH3 DB "Are you ready?",0 CH4 DB “Q” 2)、int w1, w2[5], w3=0x1234, w4[]={90, 89, 432, 344}; W1 DW ? W2 DW 5 DUP (?) W3 DW 1234H W4 DW 90,89,432,344 3)、long int d1=1234, d2, d3[10], d4[]={1, 2, 3, 4, 5, 6}; D1 DD 1234 D2 DD ? D3 DD 10 DUP(?) D3 DD 1,2,3,4,5,6 4.4、假设4.3题中三组变量在内存中是连续存放的,且变量ch1的偏移量是20H,试

汇编语言程序设计课后习题答案(第二版_沈美明)(无删减)

汇编语言程序设计课后习题答案(第二版_沈美明)(无删减) 第一章 1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2 将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3 将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4 完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表 示其运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0 (4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH; CF=0;OF=1 (6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6 下列各数为十六进制表示的8位二进制数,请

汇编语言课后习题及答案 按章节 超全面

`00第一章课外练习题 一、单项选择题: 1.从键盘输入的字符,在计算机内存储的是它的(A) (A)二进制编码(B)四进制编码(C)八进制编码(D)十六进制编码2.6位无符号二进制数能表示的最大十进制数是(B)。 (A)64 (B)63 (C)32 (D)31 3.十进制数269变换为十六进制数是(C)。 (A)10B (B)10C (C)10D (D)10E 4.8位的微型计算机系统是以16位来表示地址,则该微机系统有(C)个地址空间。 (A)255 (B)65535 (C)65536 (D)1048576 5.8位有符号二进制数能表示的最大十进制数是(D)。 (A)256 (B)255 (C)128 (D)127 6.十六进制数88H,可表示成下面几种形式,请找出错误的表示(D)。 (A)无符号十进制数136 (B)带符号十进制数-120 (C)压缩型BCD十进制数88 (D)8位二进制数-8的补码表示7.有一个数值152,它与十六进制数6A相等,那么该数值是(B)。 (A)二进制数(B)八进制数(C)十进制数(D)四进制数8.7位ASCII总共可表示(C)个符号。 (A)256 (B)127 (C)128 (D)255 9.4B的字长是(C)。 (A)8位(B)16位(C)32位(D)64位 二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”) 1.字节通常用英文单词“Bit”来表示(×)。 2.目前广泛使用的Pentium计算机其字长为5个字节(×)。 3.存储器中将8个相邻的二进制位作为一个单位,这种单位称为字节(√)。 4.微型计算机的字长并不一定是字节的整数倍(×)。 三、填空题 1.8位有/无符号整数的表示范围写成16进制形式为(80~~7F)/(00~~FF)。 2.己知:计算机中有一个“01100001”编码,如果把它看作是无符号数,它是十进制什么数(97);如果认为它是BCD,则表示(01100001)BCD;认为它是某个ASCII,则代表(a)字符。 3.若[X]补=X,则X为(非负数)。 4.(00101011)B+(13)D+(1B)H=(123)Q 5.已知:A=10001011,B=11011010,求A∧B=(10001010);A∨B=(11011011)。 6.已知:X=+0010011B,Y= -0111100B,试用补码完成真值(X+Y)=(11010111);(X - Y)=(01001111)。 7.十进制数的(731)=(011100110001)BCD。 8.(011100110001)BCD=(731)十进制数。 9.将一个0~9之间的数据转换为ASCII需加(30H)。 10.大写英文字母转换为小写英文字母需加(20H)。 11.英文字母“A”~“F”转换为十六进制数值A~F需要减(37H)。

汇编语言程序设计课后习题解答

《汇编语言程序设计》(宋人杰主编)课后习题解答 第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少?若段 内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

汇编语言程序设计课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章〔01〕 2.1 〔1〕A*=1200h 〔2〕A*=0100h 〔3〕A*=4C2Ah 〔4〕A*=3412h 〔5〕A*=4C2Ah 〔6〕A*=7856h 〔7〕A*=65B7h 2.2(1)两操作数类型不匹配 (2) IP指令指针制止用户访问 (3)立即数不允许传给段存放器 (4)段存放器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[ BP ] (7)源操作数应为 [B*+DI] (8)立即数不能作目的操作数 2.3 lea b*,table;获取table的首地址,B*=200H mov al,8;传送欲转换的数字,AL=8 *lat;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出〞原则存取数据的存储区域。 堆栈的两种根本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov a*,8057h push a* mov a*,0f79h push a*

pop b* ;b*=0f79h pop [b*] ;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.7W=*+Y+24-Z 2.8 〔1〕ADD D*,B* 〔2〕ADD AL,[B*+SI] 〔3〕ADD [B*+0B2H],C* 〔4〕ADD WORD PTR [0520H],3412H 〔5〕ADD AL,0A0H 2.9;为了防止与操作数地址混淆,将题中*,Y,Z,V 字操作数改为A,B,C,D mov a*,*;a*=A imul Y;d*,a* = A*B (将操作数看作符号数,以下同〕 mov c*,a* mov b*,d*;b*,a* <-- d*,a* =A*B mov a*,Z;a* = C cwd;d*,a* =C〔扩展符号后为双字〕 add c*,a* adc b*,d*;b*,c* <-- b*,c*+d*,a*=A*B+C

微机原理与汇编语言程序设计课后习题参考答案

第一章习题与参考答案 1. 微处理器,微型计算机和微型计算机系统三者之间有何区别? 答:微处理器即CPU,它包括运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O接口电路以及总线构成;微型计算机系统则包括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备;由此可见,微处理器是微型计算机的重要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。 2. CPU在内部结构上由哪几部分构成?CPU应具备哪些主要功能? 答:CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。 3. 累加器和其它通用寄存器相比有何不同? 答:累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。累加器除了可用做通用寄存器存放数据外,对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。 4. 微型计算机的总线有哪几类?总线结构的特点是什么? 答:微型计算机的总线包括地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计生产和维护,更主要的是便于扩充。 5. 举出10个微型计算机应用的例子。 答:略 6. 计算机I/O接口有何用途?试列出8个I/O接口。 答:计算机I/O接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。例如:串行通讯口(COM口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB、SCSI等)。 7. 现在,计算机主板上一般都包括哪些I/O接口?I/O接口卡如何与主板相连? 答:现在,计算机主板上一般包括串行通讯口、并行打印口、软盘驱动器接口、硬盘驱动器接口、光驱接口、USB接口等。象显示器适配器、网卡、modem卡等I/O接口卡一般通过总线插槽与主板相连。 8. 简述系统总线,AGP总线,PCI总线及ISA总线的作用。 答:系统总线是CPU与存储器及桥接器之间传递信息的通道,AGP总线专门用与连接CPU与显示器适配器,PCI总线一般用于连接一些高速外设接口作为高速外设与CPU或内存交换信息的通道,而ISA总线一般用于连接一些非高速外设接口作为非高速外设与CPU或内存交换信息的通道。 9. 试说明计算机用户,计算机软件,计算机硬件三者的相互关系。 答:计算机用户,计算机软件系统,计算机硬件系统共同构成一个计算机应用系统,三者在该系统中处于三个不同的层次。计算机用户处于最高层,计算机软件处于中间层,计算机硬件系统处于最下层。在这里计算机用户是系统的主宰,他们通过软件系统与硬件系统发生关系,指挥计算机硬件完成指定的任务。即,计算机用户使用程序设计语言编制应用程序,在系统软件的干预下使用硬件系统进行工作。 10. 简述DOS操作系统各部分的作用及相互关系。 答:DOS操作系统包括3个模块:DOS-Shell(https://www.sodocs.net/doc/ac19192430.html,)、DOS-Kernel(https://www.sodocs.net/doc/ac19192430.html,)、DOS-BIOS(https://www.sodocs.net/doc/ac19192430.html,). DOS-Shell模块对用户输入的DOS命令行或应用程序行作出响应。即负责DOS命令的解释和

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

习题一 1?? 2??? 5E8AH,0BE6H,3DEH,4940H 3?? 00011101+00110101=01010010=5 2H=82 4? 01110011-00100100=01001111-00000110=01001001=49H=49 01100110+00011000=01111110+0 0000110=10000100=84H=84 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? (2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H 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 (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)的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。 17????代码段CS:IP的物理地址 =55A84H 堆栈段SS:SP的物理地址 =4DB65H 数据段DS:BX的物理地址=17678H 附 加段ES:DI的物理地址=2BA41H 18?当前栈指针所指单元的物理地址是1522CH。堆栈区中还能保存254个字。19??执行E 200 20??执行U 100 21???执行R CX,然后输入100 22???执行E DS:0 ‘a’ ‘b’ ‘c’ ‘d’ 习题三 3MOV AX,BX 源操作数为寄存器寻址,EA 无,物理地址无

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

汇编语言程序设计第四版 【课后习题答案】--囮裑為檤 第3章汇编语言程序格式 〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用? 〔解答〕 伪指令语句与硬指令语句的本质区别是能不能产生CPU动作; 伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。 〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成? 〔解答〕 为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符; 汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。 〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。 〔解答 保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。汇编语言对大小写不敏感。如定义字节数和字符串的DB就是伪指令助记符。 〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成? 〔解答〕 汇编语句有执行性语句和说明性语句; 执行性语句由标号、硬指令助记符、操作数和注释四部分组成; 说明性语句由名字、伪指令助记符、参数和注释四部分组成 〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕 ⒈编辑文本编辑程序汇编语言源程序.asm ⒉汇编汇编程序目标模块文件.obj ⒊连接连接程序可执行文件.exe或.com

⒋调试调试程序应用程序 〔习题3.6〕区分下列概念: (1)变量和标号 (2)数值表达式和地址表达式 (3)符号常量和字符串常量 〔解答〕 (1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。 (2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。 (3)在程序中,为了使常量更便于使用和阅读,经常将一些常量用常量定义语句定义为符号常量,被一对双引号括起来的若干个字符组成的字符序列被称为字符串常量。 〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。 (1)mov byte ptr [bx],1000 (2)mov bx,offset myword[si] (3)cmp mybyte1,mybyte2 (4)mov al,mybyte1+mybyte2 (5)sub al,myword (6)jnz myword 〔解答〕 (1)1000超出了一个字节范围 (2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si] (3)两个都是存储单元,指令不允许 (4)变量值只有执行时才确定,汇编过程不能计算 (5)字节量AL与字量myword,类型不匹配 (6)Jcc指令只有相对寻址方式,不支持间接寻址方式 〔习题3.8〕OPR1是一个常量,问下列语句中两个AND操作有什么区别? AND AL,OPR1 AND 0feh 〔解答〕

相关主题