文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言部分作业题(含答案)

汇编语言部分作业题(含答案)

汇编语言部分作业题(含答案)
汇编语言部分作业题(含答案)

一、填空题

1、编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。

宏定义如下:

CLRB MACRO N, CFIL

MOV CX, ()

CLD

MOV ( ), ' ' ;;取空格符的ASCII码

() DI, CFIL

REP ( )

( )

正确答案:

第一空:

n

第二空:

al

第三空:

LEA

第四空:

STOSB

第五空:

endm

我的答案:得分: 6.6分

第一空:

N

第二空:

AL

第三空:

LEA

第四空:

STOSB

第五空:

ENDM

2、某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满10小时加奖金3元,工资总数存放在WAG中。请将周工资的计算编写成一条宏指令WAGES.

宏定义如下:

WAGES MACRO RATE, HOUR, WAG

MOV (), HOUR ;;计算周工资(WAG),公式为:HOUR* RATE

MOV BL, RATE

MUL BL

MOV WAG, AX

MOV AL, HOUR ;;计算奖金存入(AX),公式为:HOUR/10的商*3

MOV AH, 0

MOV BL, 10

DIV ()

MOV BL, ()

MUL ()

ADD WAG, ();;计算周工资总数

ENDM

正确答案:

第一空:

al

第二空:

bl

第三空:

3

第四空:

BL

第五空:

AX

我的答案:得分: 6.6分

第一空:

AL

第二空:

BL

第三空:

3

第四空:

BL

第五空:

AX

3、下面的程序段是二进制到十六进制转换程序,请填空。 mov ch, 4 rotate: mov cl, 4

rol bx,()

mov al, bl

and al,()

add al, 30h ; ’0’~’9’ ASCII 30H~39H

cmp al, 3ah

jl printit

add al,() ; ’A’~’F’ ASCII 41H~46H

printit: mov() , al

mov ah, 2

int 21h

()

jnz rotate

正确答案:

第一空:

cl

第二空:

0f;0fh

第三空:

7h;07h;07

第四空:

dl

第五空:

dec ch

我的答案:得分: 6.6分

第一空:

cl

第二空:

0fh

第三空:

07h

第四空:

dl

第五空:

dec ch

4、IRP BUF,<3,17,20,46,87,89,100> DB BUF

ENDM

汇编后生成的代码等价于( )

正确答案:

第一空:

DB 3,17,20,46,87,89,100

我的答案:得分: 6.6分

第一空:

DB 3,17,20,46,87,89,100

5、IRPC BUF,12345

DB BUF

endm

汇编后的代码等价于:

()

正确答案:

第一空:

DB 1,2,3,4,5

我的答案:得分: 6.6分

第一空:

DB 1,2,3,4,5

6、已知宏定义:

FOO macro p1,p2,p3

mov ax,p1

p2,p3

endm

宏调用:FOO WORD_VAR,inc,ax

则宏展开指令是

( )

( )

正确答案:

第一空:

ov ax,WORD_VAR

第二空:

inc ax

我的答案:得分: 7.6分

第一空:

mov ax,WORD_VAR

第二空:

inc ax

7、已知宏定义:

LEAP macro COND,LAB

J&COND LAB

endm

宏调用:LEAP Z,THERE

则宏展开指令是()

正确答案:

第一空:

JZ THERE

我的答案:得分: 7.6分

第一空:

JZ THERE

8、已知宏定义

FO macro P1

JMP TA&P1

endm

宏调用:FO WORD_VAR

则宏展开结果是( )

正确答案:

第一空:

JMP TAWORD_VAR

我的答案:得分: 7.6分

第一空:

JMP TAWORD_VAR

9、已知宏定义:

MSGGEN macro LAB,NUM,XYZ

LAB&NUM db 'hello mr.&XYZ' endm

宏调用:MSGGEN MSG,1,taylor

则宏展开结果是( )

正确答案:

第一空:

MSG1 db 'hello mr.taylor'

我的答案:得分: 7.6分

第一空:

MSG1 db 'hello mr.taylor'

10、MSG macro COUNT,STRING

MSG&COUNT db STRING

endm

ERRMSG macro TEXT

CNTR=CNTR+1

MSG %CNTR,TEXT

endm

宏调用:

CNTR=0

ERRMSG 'syntax error'

则宏展开是( )

正确答案:

第一空:

MSG1 db 'syntax error'

我的答案:得分: 7.6分

第一空:

MSG1 db 'syntax error'

11、下面的循环程序是利用逻辑尺来控制的,请填空。 x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 y dw y1,y2,y3,y4,y5,y6,y7,y8,y9,y10 z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10 logic_rule dw ();0000,0000,1101,1100

……

mov bx, 0

mov cx, 10

mov dx, logic_rule

next: mov ax, x[bx]

shr dx, 1

jc subtract

add (), y[bx]

() ; 向前引用subtract:

sub ax, y[bx]

result: mov () , ax

add bx, ()

loop next

正确答案:

第一空:

00dch;00dc

第二空:

ax

第三空:

jmp result

第四空:

z[bx]

第五空:

2

我的答案:得分: 4.6分

第一空:

00dch

第二空:

ax

第三空:

jmp short result

第四空:

z[bx]

第五空:

2

12、数据段内容如下:

data segment

Buf DB -12,-24,-5,-9,-10,-2,0,3,0,15 data ends

读如下代码填空:

mov cx,10

mov ax,0

mov bx,0

mov si,offset Buf

A1: mov al,[si]

cmp al,0

JZ A4

JL A2

JG A3

JMP Exit

A2: inc bl

Jmp A5

A4: inc ah

Jmp A5

A3: inc bh

Jmp A5

A5: inc si

loop A1

Exit: 退出程序

退出程序后bl寄存器的值是( ),bh寄存器的值是( ),ah寄存器的值是( ).

正确答案:

第一空:

6;06h;6h

第二空:

2;02h,2h

第三空:

2;02h;2h

我的答案:得分: 5.8分

第一空:

6

第二空:

2

第三空:

2

13、注释用来说明程序或语句的功能,用(______)符号表示注释的开始。

正确答案:

第一空:

;;分号

我的答案:得分: 5.8分

第一空:

;

14、以下子程序的功能是输出回车换行,填写缺失代码:

print0D0A proc near

push ax

push dx

mov ah,( )

( ) ;该空全部使用小写字母书写

int 21h

mov ah,( )

( ) ;该空全部使用小写字母书写

int 21h

pop dx

pop ax

ret

print0D0A endp

正确答案:

第一空:

2

mov dl,0dh

第三空:

2

第四空:

mov dl,0ah

我的答案:得分: 5.8分

第一空:

2

第二空:

mov dl,0dh

第三空:

2

第四空:

mov dl,0ah

15、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

程序段如下:

BEGIN: MOV AH, () ;从键盘输入一个字符的DOS调用

INT 21H

CMP ( ), ‘a’;输入字符<‘a’吗?

JB STOP

CMP AL, ‘z’;输入字符>‘z’吗?

( ) STOP

SUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可

MOV ( ), AL ;显示一个字符的DOS调用

MOV AH, ( )

INT 21H

JMP BEGIN

STOP: RET

正确答案:

第一空:

1

第二空:

AL

第三空:

JA;jnbe

第四空:

DL

第五空:

2

我的答案:得分: 20.0分

第一空:

1

AL

第三空:

JA

第四空:

DL

第五空:

2

16、DB的属性返回值为

正确答案:

第一空:

1

我的答案:得分: 11.1分

第一空:

1

17、DW的属性返回值为

正确答案:

第一空:

2

我的答案:得分: 11.1分

第一空:

2

18、对于下面的数据定义,MOV AX, TYPE FLDB执行后,AX=( )

FLDB DB ?

TABLEA DW 20 DUP (?)

TABLEB DB ‘ABCD’

正确答案:

第一空:

0001H;1;0001

我的答案:得分: 11.1分

第一空:

0001H

答案解析:

19、对于下面的数据定义,MOV DX, SIZE TABLEA指令执行后,(DX)=( ) FLDB DB ?

TABLEA DW 20 DUP (?)

TABLEB DB ‘ABCD’

正确答案:

第一空:

0028H;40

我的答案:得分: 11.1分

第一空:

0028H

答案解析:

20、ARRAY3 DB 2 DUP (0,2 DUP(1,2),3)

存储器中的数据值是()

用逗号分隔数据

正确答案:

第一空:

00,01,02,01,02,03,00,01,02,01,02,03

我的答案:得分: 11.1分

第一空:

00,01,02,01,02,03,00,01,02,01,02,03

21、WORD_VAR DW 3 DUP(0,1,2)

上述语句的存储空间分配情况是()

注意:数据中间用逗号分隔,数据后面不用加H

正确答案:

第一空:

00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00

我的答案:得分: 11.1分

第一空:

00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00

答案解析:

22、WORD_VAR DW 3 DUP(0,1,2),?,-5,'BC','DE',256H

上述语句的存储空间分配情况是()

注意:数据中间用逗号,分隔,?用“-”号代替。数据后面不用加H。

正确答案:

第一空:

00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00,-,-,FB,FF,43,42 ,45,44,56,02

我的答案:得分: 11.1分

第一空:

00,00,01,00,02,00,00,00,01,00,02,00,00,00,01,00,02,00,-,-,FB,FF,43,42 ,45,44,56,02

答案解析:

23、

假设程序中的数据定义如下:

PARTNO DW ?

PNAME DB 16 DUP (?)

COUNT DD ?

PLENTH EQU $-PARTNO

问PLENTH的值为多少?

正确答案:

第一空:

22;16H

我的答案:得分: 11.1分

第一空:

16H

24、有符号定义语句如下:

BUFF DB 1, 2, 3, ‘123’

EBUFF DB 0

L EQU EBUFF - BUFF

问L的值是()

正确答案:

第一空:

6

我的答案:得分: 11.2分

第一空:

6

25、在下列程序的括号中填入如下指令: LOOP L20

试说明当程序执行完后,AX=()、BX=( )、

CX=()、DX=()四个寄存器的内容分别是什么(用16进制表示)?TITLE https://www.wendangku.net/doc/2a7680217.html,

CODESG SEGMENT

ASSUME CS:CODESG, DS: CODSEG, SS: CODSEG

ORG 100H

BEGIN: MOV AX, 01

MOV BX, 02

MOV DX, 03

MOV CX, 04

L20:

INC AX

ADD BX, AX

SHR DX, 1

( LOOP L20 )

RET

CODESG ENDS

END BEGIN

正确答案:

第一空:

5H;5

第二空:

10H;10

第三空:

0H;0

第四空:

0;0H

我的答案:得分: 14.2分

第一空:

5

第二空:

10H

第三空:

第四空:

26、在下列程序的括号中填入如下指令: LOOPE L20

试说明当程序执行完后,AX=()、BX=( )、

CX=()、DX=()四个寄存器的内容分别是什么(用16进制表示)?TITLE https://www.wendangku.net/doc/2a7680217.html,

CODESG SEGMENT

ASSUME CS:CODESG, DS: CODSEG, SS: CODSEG

ORG 100H

BEGIN: MOV AX, 01

MOV BX, 02

MOV DX, 03

MOV CX, 04

L20:

INC AX

ADD BX, AX

SHR DX, 1

( LOOPE L20 )

RET

CODESG ENDS

END BEGIN

正确答案:

第一空:

2H;2

第二空:

4H;4

第三空:

3H;3

第四空:

1H;1

我的答案:得分: 14.2分

第一空:

2

第二空:

4

第三空:

3

第四空:

1

27、在下列程序的括号中填入如下指令: LOOPNE L20

试说明当程序执行完后,AX=()、BX=( )、

CX=()、DX=()四个寄存器的内容分别是什么(用16进制表示)?

TITLE https://www.wendangku.net/doc/2a7680217.html,

CODESG SEGMENT

ASSUME CS:CODESG, DS: CODSEG, SS: CODSEG ORG 100H

BEGIN: MOV AX, 01

MOV BX, 02

MOV DX, 03

MOV CX, 04

L20:

INC AX

ADD BX, AX

SHR DX, 1

( LOOPNE L20 )

RET

CODESG ENDS

END BEGIN

正确答案:

第一空:

3H;3

第二空:

7H;7

第三空:

2H;2

第四空:

0H;0

我的答案:得分: 14.2分

第一空:

3

第二空:

7

第三空:

2

第四空:

28、MOV ECX,307 F455H

BSF EAX,ECX ;(EAX)= ()

BSR EBX,ECX ;(EBX)= ()

正确答案:

第一空:

0D;0;0H

第二空:

25D;25;19H

我的答案:得分: 14.2分

第一空:

0D

第二空:

25D

29、给出下列指令序列执行完后AX和DX的内容。

MOV BX,98H

BSF AX,BX ;(AX)=()

BSR DX,BX ;(DX)= ()

正确答案:

第一空:

3D;3;3H

第二空:

7;7D;7H

我的答案:得分: 14.2分

第一空:

3D

第二空:

7D

30、下列程序段执行完后,BX寄存器的内容是什么?

MOV CL, 3

MOV BX, 00B7H

ROL BX,1

ROR BX, CL

(BX)=()

正确答案:

第一空:

0C02DH;0C02D;C02D;C02DH

我的答案:得分: 14.2分

第一空:

C02DH

31、假定AX和BX中的内容为带符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:

(1) 若DX的内容超过CX的内容,则转去执行EXCEED。

(2) 若BX的内容大于AX的内容,则转去执行EXCEED。

(3) 若CX的内容等于0,则转去执行ZERO。

(4) BX与AX的内容相比较是否产生溢出?若溢出则转OVERFLOW。

(5) 若BX的内容小于等于AX的内容,则转EQ_SMA。

(6) 若DX的内容低于等于CX的内容,则转EQ_SMA。

答:(1) CMP DX, CX

( ) EXCEED

(2) CMP BX, AX

( ) EXCEED

(3) ( ) ZERO

(4) CMP BX, AX

() OVERFLOW

(5) CMP BX, AX

( ) EQ_SMA

(6) CMP DX, CX

() EQ_SMA

正确答案:

第一空:

JA;jnbe

第二空:

JG;jnle

第三空:

JCXZ

第四空:

JO

第五空:

JLE;jng

第六空:

JBE;jna

我的答案:得分: 14.8分

第一空:

JA

第二空:

JG

第三空:

JCXZ

第四空:

JO

第五空:

JLE

第六空:

JBE

32、

执行指令前(AX)=4651,执行ADD AX,0F0F0H后,(AX)=()ZF=( ); SF=( ); CF=( ); OF=( );

正确答案:

第一空:

3741H;3741

第二空:

第三空:

第四空:

1

第五空:

我的答案:得分: 6.6分

第一空:

3741H

第二空:

第三空:

第四空:

1

第五空:

33、

XADD AL,BL

执行前:(AL)=13H,(BL)=05H

执行后:(AL)=()H,(BL)=()H

正确答案:

第一空:

18;18H

第二空:

13H;13

我的答案:得分: 6.6分

第一空:

18

第二空:

13

34、

SUB DL,[BP+3]

指令执行前:

(DL)=41H,(SS)=1000H,(DS)=2000H,(BP)=00A5H;(100A8)=5AH;(200A8)=34H; 指令执行后::(DL)=( )H;SF=( );ZF=( );CF=( );OF=( );

正确答案:

第一空:

0E7H;0E7;E7;E7H

第二空:

1

第三空:

第四空:

1

第五空:

我的答案:得分: 5.3分

第一空:

F7

第二空:

1

第三空:

第四空:

1

第五空:

35、

MOV AL,5

CBW指令执行后 (AX)=( )H

正确答案:

第一空:

0005H;0005

我的答案:得分: 6.6分

第一空:

0005

36、

MOV AX,5

CWD ;(DX:AX)=( )

正确答案:

第一空:

00000005;00000005H

我的答案:得分: 6.6分

第一空:

00000005H

37、

MOV AX,9098H

CWD ;(DX:AX)=( )

正确答案:

第一空:

0FFFF9098H;FFFF9098H;0FFFF9098;FFFF9098 我的答案:得分: 6.6分

第一空:

0FFFF9098H

38、

MOV AL,92H

CBW ;(AX)=( )

正确答案:

第一空:

FF92H;FF92;0ff92;0FF92H

我的答案:得分: 6.6分

第一空:

0FF92H

39、

MOV AX,5

CWDE ;(EAX)=( )

正确答案:

第一空:

00000005H;00000005

我的答案:得分: 6.6分

第一空:

00000005H

40、

MOV AX,8098H

CWDE ;(EAX)=( )

正确答案:

第一空:

0FFFF8098H;0FFFF8098;FFFF8098;FFFF8098H

我的答案:得分: 6.6分

第一空:

0FFFF8098H

41、

MOV EAX,6

CDQ ;(EDX:EAX)=( )

正确答案:

第一空:

0000000000000006H;0000000000000006

我的答案:得分: 6.6分

第一空:

0000000000000006H

42、

MOV EAX,80980000H

CDQ

;执行结果为(EDX:EAX)=( )

正确答案:

第一空:

0FFFFFFFF80980000H;FFFFFFFF80980000H;0FFFFFFFF80980000;FFFFFFFF809800 00

我的答案:得分: 6.6分

第一空:

0FFFFFFFF80980000H

43、

若(DS:ADDR)= 78561234H

LES DI,ADDR

指令的执行结果是:

( ES )= ( ) H,(DI)=( ) H

正确答案:

第一空:

7856;7856H

第二空:

1234;1234H

我的答案:得分: 0.0分

第一空:

1234

第二空:

7856

44、

若(DS:ADDR)= 12347856H

LDS DI,ADDR

指令的执行结果是:

(DI)=( ) ;( DS )= ( ) H,

正确答案:

第一空:

7856H;7856

第二空:

1234;1234H

我的答案:得分: 7.6分

第一空:

7856

第二空:

1234

44、

下列指令序列执行完后目的寄存器的内容是_______ mov BX,-12

movsx EBX,BX

正确答案:

第一空:

0FFFFFFF4H;FFFFFFF4H

我的答案:得分: 20.0分

第一空:

FFFFFFF4H

答案解析:

45、

下列指令序列执行完后目的寄存器的内容是_______ mov CL,-8

movsx EDX,CL

正确答案:

第一空:

0FFFFFFF8H;FFFFFFF8H

我的答案:得分: 20.0分

第一空:

FFFFFFF8H

46、

下列指令序列执行完后目的寄存器的内容是_______

mov AH,7

movsx ECX,AH

正确答案:

第一空:

00000007H;00000007

我的答案:得分: 20.0分

第一空:

00000007H

47、

下列指令序列执行完后目的寄存器的内容是_______

mov AX,99H

movsx EBX,AX

正确答案:

第一空:

00000099H;00000099

我的答案:得分: 20.0分

第一空:

00000099H

48、

如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令执行完后AX寄存器的内容是什么?

MOV AX, TABLE

LEA AX, TABLE

第一条指令执行完后,AX的内容是

第二条指令执行完后,AX的内容是

正确答案:

第一空:

1234H;1234

第二空:

0032H;0032

我的答案:得分: 20.0分

第一空:

1234H

第二空:

0032H

49、

假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?

汇编语言程序设计综合设计实验项目

汇编语言程序设计创新实验项目 1. 编写一个完整的程序:根据零件的数量和总价格,计算出零件的单价。 主程序MAINPRO允许用户在键盘上输入零件数量和总价格; 子程序SUBCONV 把从键盘输入的ASCII 码转化为二进制; 子程序SUBCALC 计算出零件的单价; 子程序SUBDISP 把二进制表示的单价转化为十进制数并显示出结果。 要求:在程序设计时要求使用顺序、分支、循环、子程序和宏汇编等多种方法解决程序设计问题,对于较大的子程序最好使用子程序嵌套,程序中如有多次重复的代码最好使用重复汇编。 2.编写一个完整的程序,分别输入有一个班学生的百分制成绩,根据学生百分制成绩转换出五级分数制。如低于60分为E,60-69为D、70-79为C、80-89为B、90-99为A。并统计该班学生人数。 要求:1、学生成绩从键盘接收; 2、本程序可以重复运行,自行设计退出程序的方法; 3、程序具有可操作性,如,应该有提示语句和判断非法操作的方法和处理方式。 3. 编写一个完整的程序,在屏幕上显示如图所示数字拼成的形状。 0123456789 1234567890 2345678901 3456789012 4567890123 5678901234 6789012345 7890123456 8901234567 9012345678 4、按要求编写一个完整的程序。 要求:1、自BUFFER开始的内存单元中,存有一个ASCII码字符串。查找已知字符串中含有多少个子字符串‘AB’的个数,将统计结果以十进制形式显示输出。 2、在查找到子字符串‘AB’后添加空格字符。 5、按要求编写一个完整的程序。 要求:1、编写子程序SORT,将内存中10个无符号字数据由小到大排序。 2、编写子程序FIND,在上述已排好的数据区里查找某一个数,若找到,显示 其在数据区的位置,否则显示‘N’字符。 3、编写调用程序,完成排序及检索任务。 6、试编写一程序,要求根据用户键入的月份在终端上显示该月的英文缩写名。 7、试编写一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,其中grade+1保存学号为了i+1的学生的成绩。然后根据grade中的学生成绩,把学生

(完整word版)汇编语言常用指令大全,推荐文档

MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。

汇编语言程序设计实验教程

汇编语言程序设计实验教程

目录 第一章上机过程 (4) 1.1编辑源程序 (4) 1.2 汇编源程序 (5) 1.3连接目标程序 (6) 1.4运行程序 (7) 第二章DEBUG命令祥解 (8) 2.1 DEBUG程序使用 (8) 2.2 DEBUG的常用命令 (8) 第三章汇编语言程序设计实验 (13) 3.1实验一顺序与分支程序设计 (13) 3.2 实验二循环与子程序程序设计 (15) 3.3 实验三算术运算与代码转换程序设计 (16) 3.4 实验四字符串的匹配与替换程序设计 (18) 3.5 实验五输入输出程序设计 (19) 第四章部分实验参考答案 (21)

第一章上机过程 1.1编辑源程序 汇编语言源程序:用汇编语句编写的解决应用问题的程序。 汇编程序:将汇编语言源程序翻译成机器语言程序的系统。 汇编:将汇编语言程序翻译成机器语言程序的过程。 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。 (1)编辑软件 编辑软件:EDIT、QE、WORD、NOTEPAD等。 当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。 (2)汇编程序 有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。 (3)连接程序 用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的目标代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。 (4)辅助工具程序(.EXE) 进行汇编语言程序调试和文件格式转换的程序有: https://www.wendangku.net/doc/2a7680217.html, 动态调试程序 EXE2BIN.EXE文件格式转换程序

汇编语言基本关键字

汇编语言基本关键字 aaa对非压缩BCD码加法之和调整 aas 对非压缩BCD码减法之差调整 aam乘法调整aad被除数调整 add不带进位标志位的加法adc带进位标志位的加法 and逻辑与 assume指定段寄存器 bswap双字单操作数内部交换 bt位测试bts位测试并置一 btr位测试并清零btc位测试并取反 bsf/bsr正,反向位扫描 call调用 cbw字节转换为字cwd字转换为双字cwde字转换为扩展的双字cdq双字转换为四字 cmp比较cmpxchg比较并交换 cmps串比较 code定义简化代码段 const定义简化常数数据段 daa对压缩BCD码加法之和调整das对压缩BCD码减法之差调整 data定义简化数据段 db/dw/dd/dq/dt定义字节/字/双字/四字/十字变量 dec减一

df定义32位便宜地址的远地址指针 div无符号数除法 equ等价textequ文本等价 even取偶偏移地址 fardata,fardata定义简化独立数据段 group定义段组 idiv有符号整数除法 imul有符号整数乘法 in输入 inc加一 ins/outs输入/输出串元素 jcxz/jecxz若cx=0/ecx=0,跳转 jmpdopd无条件跳转到DOPD 处取出指令继续执行 label为$定义符号 Lahf 标志位低八位送AH lea 偏移地址送通用寄存器lda传送进入数据段的地址指针 les传送进入附加数据段的地址指针lfs传送进入FS段的地址指针lgs传送进入GS段的地址指针lss传送进入堆栈段的地址指针 local说明局部变量 lods读出串元素 Loop/loopd无条件循环cx/ecx为循环次数 loopnz/loopnzd非零或不等时循环,cx/ecx为循环次数

高级语言、汇编语言及机器语言的区别

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。 低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。 高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。 高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。 机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指指令系统 它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编.

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著) 《计算机操作系统原理》 《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。 《数据结构和算法》——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时) 《软件工程》——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华) 《Windows 程序设计》——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本 建议:你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书 关于编程的网站 计算机编程 郭新明-FTP服务器体验式学习课程(张孝祥监制) https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=3997 https://www.wendangku.net/doc/2a7680217.html,快速开发新闻系统在线播放 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=4708 数字电路基础[宁波电大] https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=774 计算机组成与汇编语言程序设计(赵丽梅)宁波电大 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=1242 操作系统(陈访荣)宁波电大(在线播放) https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=4708 计算机网络(马敏飞)宁波电大 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=1243 https://www.wendangku.net/doc/2a7680217.html, 2.0快速入门(12)-https://www.wendangku.net/doc/2a7680217.html, 2.0网站快速导航 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=2501 Internet和Intranet应用(薛昭旺)宁波电大 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=1245 2004年电脑硬件安装调试维修视频教学讲授 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=4825 https://www.wendangku.net/doc/2a7680217.html, 高级排错技巧 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=768 SQL Server 2000管理专家系列课程 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=4832 开心三人行系列(2):使用Atlas 构建AJAX应用 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=2564 Visual Basic 2005开发技巧系列课程(4): 在Visual Basic 2005中使用.NET Framework 2.0新增功能 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=2526 SQL Server 2005 系列课程-使用ADO https://www.wendangku.net/doc/2a7680217.html,开发SQL Server 2005 OLAP应用 https://www.wendangku.net/doc/2a7680217.html,/so/so138.aspx?id=2535

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

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

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(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, 根据结果影响其他标志位。

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版) 习题参考答案 第1章汇编语言基础知识 思考与练习 1.计算机系统分哪几个层次?简述计算机系统的硬件结构。 1)数字逻辑层 2) 微体系结构层 3) 指令系统层 4) 操作系统层 5) 汇编语言层 6) 高级语言层 7) 应用层 硬件系统是指构成计算机系统的物理实体或物理装置。它由控制器、运算器、存储器、输入设备和输出设备等部件构成。 2.简述用汇编语言进行程序设计的必要性。 1)程序要具有较快的执行时间,或者只能占用较小的存储容量。例如,操作系统的核 心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。 2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。例如,I/O接口电路 的初始化程序段,外部设备的低层驱动程序等。 3)大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动 态连接库等。 4)没有合适的高级语言或只能采用汇编语言的时候。例如,开发最新的处理器程序时, 暂时没有支持新指令的编译程序。 5)汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解 密软件、分析和防治计算机病毒等。 3.汉字编码主要分哪几类?每类的功能如何? 汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。 1)为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用 西文标准键盘上的字母数字串表示汉字的编码。目前,汉字输入编码方法主要有三 种:数字编码、拼音编码和字形编码。 2)汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标 码。无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标 识每个汉字。 3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息 处理系统内部存储、处理、传输汉字用的编码。 4)字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。4.计算机的字长是怎么定义的,试举例说明。 计算机能同时处理二进制信息的位宽定义为计算机的字长。如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。 5.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值? 用相应进制的数值加上进制标记即可。

汇编语言之程序的基本结构

第6章程序的基本结构在前面几章,我们分别介绍了用汇编语言进行程序设计所需要的几个最基本的知识:内存单元的寻址方式,变量定义和各种汇编指令格式。在掌握了这些基本内容之后,就需要学习如何把它们组成一个完整的汇编语言程序。 6.1 源程序的基本组成 汇编语言源程序的组成部分有:模块、段、子程序和宏等。一个模块对应一个目标文件,当开发较大型的应用程序时,该程序可能由若干个目标文件或库结合而成的。有关模块和子程序的知识和宏在第7章介绍,有关宏的知识将在第9章中叙述。 6.1.1 段的定义 微机系统的内存是分段管理的,为了与之相对应,汇编语言源程序也分若干个段来构成。8086CPU有四个段寄存器,在该系统环境下运行的程序在某个时刻最多可访问四个段,而80386及其以后的CPU都含有六个段寄存器,于是,在这些系统环境下开发的运行程序在某个时刻最多可访问六个段。 不论程序在某个时刻最多能访问多少个段,在编程序时,程序员都可以定义比该段数更多的段。在通常情况下,一个段的长度不能超过64K,在80386及其以后系统的保护方式下,段基地址是32位,段的最大长度可达4G。 段的长度是指该段所占的字节数:

、如果段是数据段,则其长度是其所有变量所占字节数的总和; 、如果段是代码段,则其长度是其所有指令所占字节数的总和。 在定义段时,每个段都有一个段名。在取段名时,要取一个具有一定含义的段名。 段定义的一般格式如下: 段名 SEGMENT [对齐类型] [组合类型] [类别] …;段内的具体内容 … 段名 ENDS 其中:“段名”必须是一个合法的标识符,前后二个段名要相同。可选项“对齐类型”、“组合类型”和“类别”的说明作用请见6.3节中的叙述。 一个数据段的定义例子: DATA1 S EGMENT word1 D W 1, 9078H, ? byte1 D B 21, 'World' DD 12345678H DATA1 E NDS 一个代码段的例子: CODE1 S EGMENT

《汇编语言程序设计》考核方式

考核方式与要求 期末总成绩构成:期末开卷考试60% + 平时作业10% + 实验和实验报告30%。 1、试卷考核方式与要求 “汇编语言程序设计”的课程要求是使学生具有一定的程序设计能力。虽然课程是通过80x86微处理机来开展教学的,但学习的重点不仅仅是学会80x86指令的语法和规范,更重要的是通过多读程序、多练习编写程序来掌握程序设计的基本方法和技术,要求学生在工作中遇到其他机型,都应该能利用所掌握的方法和技术顺利解决实际问题。因此,我们在教学过程的各个环节,特别是具有指挥棒作用的考核环节中,着重体现了“能力培养是首位”的指导思想。 为此,汇编课一直实行多元化考核方式,在考核评分上,平时练习和上机实验占40%,期末考试占60%。期末考试实行开卷考试,这样学生平时学习的关注点就会放在分析问题和编程实现的方法上,有利于学生开阔思路,发挥自身创造力。每年设计开卷考试的考题是有一定难度的,教师必须非常熟悉课程的知识点、重点和难点,以及体现这些知识和能力水平的多种题目类型。 2、实验方式与要求 实验的目标为:加强课堂上相关理论和技术学习的有效性;提高学生上机编程和调试的能力;培养学生科学实践的理念和独立分析问题、解决问题的能力。其设计思想是:实验内容兼顾基础性和综合性,实验题目由简单→复杂,程序功能由单一→综合,实验安排有基本要求题+自选题,实验题类型有验证型和自主创新设计型。 √实验课组织形式: 1.系教学实验室按课程要求负责上机环境配置及实验设备管理; 2.以班为单位组织上机实验,并将上机时间安排表发至每位同学; 3.每单元实验课安排一位助教(助博)负责实验指导和答疑; 4.学生每做完一个实验即可提交老师验收,老师将实验运行结果记录下来作为实验成 绩的依据。验收时教师要注意发现比较突出的好的实验例题(完成时间短、程序运行效率高); 5.要求提交实验报告,根据实验报告及实验运行结果的记录,评出实验成绩,实验成 绩一般占总成绩的30%。 √教师指导方法: 1.大课集体指导。每学期实验前教师安排一次实验指导课,讲解实验方法和实验要求; 2.每次实验课都安排助教(助博)进行个别或集体的实验指导和答疑; 3.对具有共性的、问题比较多的实验,主讲教师在课堂上再进行集体指导; 4.每学期对实验中出现的问题,对照实验题目进行分析、总结,以利于以后的教学。 5.对于实验中有创新点的学生,还可以请他上讲台为同学们介绍他的设计思路,引发大家展开讨论。

一些常用的汇编语言指令

汇编语言常用指令 大家在做免杀或者破解软件的时候经常要用到汇编指令,本人整理出了常用的 希望对大家有帮助! 数据传送指令 MOV:寄存器之间传送注意,源和目的不能同时是段寄存器;代码段寄存器CS不能作为目的;指令指针IP不能作为源和目的。立即数不能直接传送段寄存器。源和目的操作数类型要一致;除了串操作指令外,源和目的不能同时是存储器操作数。 XCHG交换指令:操作数可以是通用寄存器和存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。 LEA 16位寄存器存储器操作数传送有效地址指令:必须是一个16位寄存器和存储器操作数。 LDS 16位寄存器存储器操作数传送存储器操作数32位地址,它的16位偏移地址送16位寄存器,16位段基值送入DS中。 LES :同上,只是16位段基址送ES中。 堆栈操作指令 PUSH 操作数,操作数不能使用立即数, POP 操作数,操作数不能是CS和立即数 标志操作指令 LAHF:把标志寄存器低8位,符号SF,零ZF,辅助进位AF,奇偶PF,进位CF传送到AH 指定的位。不影响标志位。 SAHF:与上相反,把AH中的标志位传送回标志寄存器。 PUSHF:把标志寄存器内容压入栈顶。 POPF:把栈顶的一个字节传送到标志寄存器中。 CLC:进位位清零。 STC:进位位为1。 CMC:进位位取反。 CLD:使方向标志DF为零,在执行串操作中,使地址按递增方式变化。 STD:DF为1。 CLI:清中断允许标志IF。Cpu不相应来自外部装置的可屏蔽中断。 STI:IF为1。 加减运算指令

注意:对于此类运算只有通用寄存器和存储单元可以存放运算结果。如果参与运算的操作数有两个,最多只能有一个存储器操作数并且它们的类型必须一致。 ADD。 ADC:把进位CF中的数值加上去。 INC:加1指令 SUB。 SBB:把进位CF中数值减去。 DEC:减1指令。 NEG 操作数:取补指令,即用0减去操作数再送回操作数。 CMP:比较指令,完成操作数1减去操作数2,结果不送操作数1,但影响标志位。可根据ZF(零)是否被置1判断相等;如果两者是无符号数,可根据CF判断大小;如果两者是有符号数,要根据SF和OF判断大小。 乘除运算指令 MUL 操作数:无符号数乘法指令。操作数不能是立即数。操作数是字节与AL中的无符号数相乘,16位结果送AX中。若字节,则与AX乘,结果高16送DX,低16送AX。如乘积高半部分不为零,则CF、OF为1,否则为0。所以CF和OF表示AH或DX中含有结果的有效数。IMUL 操作数:有符号数乘法指令。基本与MUL相同。 DIV 操作数:被除数是在AX(除数8位)或者DX和AX(除数16位),操作数不能是立即数。如果除数是0,或者在8(16)位除数时商超过8(16)位,则认为是溢出,引起0号中断。IDIV:有符号除法指令,当除数为0,活着商太大,太小(字节超过127,-127字超过32767,-32767)时,引起0号中断。 符号扩展指令 CBW,CWD:把AL中的符号扩展到寄存器AH中,不影响各标志位。CWD则把AX中的符号扩展到DX,同样不影响标志位。注意:在无符号数除之前,不宜用这两条指令,一般采用XOR 清高8位或高16位。 逻辑运算指令与位移指令 注意:只能有一个存储器操作数;只有通用寄存器或存储器操作数可作为目的操作数,用于存放结果;操作数的类型必须一致。 NOT:取反,不影响标志位。 AND 操作数1 操作数2:操作结果送错作数1,标志CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志) SF(符号)反映运算结果,AF(辅助进位)未定义。自己与自己AND值不变,她主要用于将操作数中与1相与的位保持不变,与0相与清0。(都为1时为1)OR 操作数1 操作数2:自己与自己OR值不变,CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志)SF(符号)反映运算结果,AF(辅助进位)未定义。她使用于将若干位置1:

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)解析

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社) (沈美明,温冬蝉著) 第二章 1.解答:有256个 2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元 E5 1E 3C 2A 3.解答: 30022H字节单元内容: ABH 30024H字节单元内容: EFH 30021H字单元内容: AB34H 30022H字单元内容: CDABH 4.解答: 这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址 5.解答: CS+IP 第一个字的物理地址为: 0AAA40H 6.解答: 条件标志OF,SF,ZF,CF,的值依次为:0,0,0,0 7.下列操作可使用那些寄存器? (1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH ,AL等(2)循环计数 CX (3)乘法和除法DX,AX,AH,AL (4)保存段地址CS ,DS,ES,SS (5)表示运算结果为O FLAGS (6)将要执行的指令地址IP (7) 将要从堆栈取出数据的地址BP,SP,SS 8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP 9.一一对应; 5--A 4--B 2--C 3--D 12--E 9--F 11--G 10--H 13--I 8--J 7--K 6---L 1--M 15--N 14--O 第三章 1.(1)立即寻址没有 (2)直接寻址7237H (3)使用BX的寄存器寻址没有 (4)使用BX的间接寻址 637DH (5)使用BX的寄存器相对寻址0D5B4H (6)基址变址寻址8E18H (7)相对基址变址004FH 2.根据下列要求,写出相应的汇编指令。 (1)ADD DX,BX (2) ADD AL,[BX][SI] (3) ADD [BX][0B2H], CX (4) MOV AX,2A59H ADD [0524H] ,AX (5) ADD AL ,0B5H

河北工业大学汇编语言知识程序设计实验

汇编语言程序设计实验 网络*** *** 实验一 顺序与分支程序设计 一 、实验目的 1) 掌握顺序程序设计方法。 2) 掌握分支程序的结构及分支程序的设计,调试方法。 2) 学习数据传送及算术和逻辑运算指令的用法。 3) 熟悉在pc 机上建立、汇编、连接、调试和运行汇编语言程序的过程。 二、实验内容 1.实验六 从键盘上接收一位十进制数x ,计算y 值,并以十六进制形式显示出来,y 按下列公式计算。 ???????===-=+=) 6(2/) 5()4(2) 3(22 2 2X X X X X X X X X X Y 2..实验七 实验内容:从键盘上接收两个一位十六进制数x 和y ,然后再输入一个a-d 之间的一个字符,按下列要求计算。 a) 当输入字符为a ,则计算x+y ,并以十六进 制形式显示出来 b) 当输入字符为b ,则计算|x-y|,并以十六进制形式显示出来 c) 当输入字符为c ,则计算x*y ,并以十六进制形式显示出来 d) 当输入字符为d ,则计算x/y ,并以十六进制形式显示出来 三、实验代码 实验六 DATE SEGMENT X DB ?

DATE ENDS ;数据段 CODE SEGMENT ASSUME CS:CODE,DS:DATE START:MOV AX,DATE ;代码段 MOV DS,AX ;初始化ds寄存器 MOV AH,1 INT 21H ;读文件到缓冲区 CMP AL,33H ;比较指令 JB L0 ;A

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

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 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.8位无符号整数的表示范围为0~255,写成16进制形式为00H~__________;8位有符号整数的表示范围为-128~+127,写成16进制形式为__________~__________。 2.8086/8088分段管理存储空间,但每段容量最大不超过__________。 3.逻辑地址为F000:100的存储单元,其物理地址是__________。 4.用来指示堆栈栈顶的偏移地址的是__________寄存器。 5.若要测试AL寄存器D4、D2、D0位是否都为0,则可使用__________指令语句(含操作数),以产生转移条件。这条指令执行后将利用标志位__________实现转移。 6.若定义:bdata db2dup(1,2,2dup(3),4),则dbata变量前5个单元从低地址到高地址的数据依次是__________。 7.假设varw是一个16位变量,则指令“mov varw,ax”的目的操作数的寻址方式是__________。 二、选择题:在每小题给出的四个选项中,只有一项是符合题目要求的,请把所选项前的字母填在题后的括号 内。 1.对汇编语言源程序进行翻译,形成OBJ文件的是 A.汇编程序 B.连接程序 C.编辑程序 D.调试程序[] 2.下列各个8位二进制数的补码中,真值最大的是 A.10001000 B.11111111 C.00000000 D.00000001[] 3.MASM语句中,表达常数不正确的形式是 A.01101001B B.A346H C.’A’ D.5600[] 4.如果SS=600H,则说明堆栈段物理地址起始于 A.60H B.600H C.6000H D.60000H[] 5.dw50dup(?)预留了存储空间的字节数是 A.25 B.50 C.100 D.200[] 6.下列指令中有操作数在代码段中的是 A.mov ax,34h B.add ax,bx C.inc word ptr[34h] D.cmp ax,[34h][] 7.假设AL=5,要使得AL=0FAH,应执行的指令是 A.not al B.and al,0fh C.xor al,0f0h D.or al,0fh[] 8.设置逻辑段应该采用的一对伪指令是 A.segment/ends B.start/end start C.proc/endp D.macro/endm[] 9.条件转移指令JNE条件是 A.CF=0 B.CF=1

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