当前位置:文档之家› IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)解析

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

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

3.(1)寄存器间接寻址

MOV BX,OFFSET [BLOCK][0AH]

MOV DX ,[BX]

(2)寄存器相对寻址

MOV SI,OAH

MOV DX,[BLOCK][SI]

(3)基址变址寻址

MOV BX ,BLOCK

MOV SI,OAH

MOV DX,[BX][SI]

4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(2120 0)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。

(1)MOV AX,1200H 1200H

(2) MOV AX,BX 0100H

(3) MOV AX,[1200] 4C2AH 注意,是字单元!!

(4)MOV AX,[BX] 3412H 同上

(5)MOV 1100[BX] 4C2AH

(6) MOV AX,[BX][SI] 7856H

(7) MOV AX,1100[BX][SI] 65B7H

5.(1)7CD9H (2) 0600H (3)098AH

6. MOV BX,2000H

LES DI ,[BX]

MOV AX, ES:DI

7.转向地址OBJ的值分别为:

(1)064DH (2)0691H (3)05E0H 注意有符号数的符号位

8. (1)MOV AX,0ABH 立即数寻址无物理地址

(2)MOV AX,BX 寄存器寻址同上

(3)MOV AX,[100] 直接寻址 20100H

(4)MOV AX,V AL 直接寻址20050H

(5) MOV AX,[BX] 寄存器间接寻址20100H

(6) MOV AX,ES:[BX] 直接寻址21100H

(7) MOV AX,[BP] 寄存器间接寻址20010H

(8)MOV AX,[SI] 同上200A0H

(9) MOV AX,[BX+10] 寄存器相对寻址20110H

(10)MOV AX,V AL[BX] 同上20150H

(11) MOV AX,[BX][SI] 基址变址寻址201A0H

(12) MOV AX,V AL[BX][SI] 相对基相变址寻址201F0H

9.(1)的指令:MOV AX, [BX][0CH] MOV ZREO ,AX

(2)的指令:MOV AX,ARRAY[BX] MOV ZREO,AX

10. MOV AX,TABLE 是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234H

LEA AX,TABLE 是把符号地址TABLE 的有效地址(这里是偏移量)送到指定寄存器AX 里,指令执行完后,(AX)=0032H

11.执行完指令后,(AX)=1E00H

12. LEA AX,CSTRING

MOV DL,AX

MOV DH,[AX+6]

13.课本上P51--P53

14. LES BX,[2000]

MOV AX,ES:[BX]

一条指令的话为MOV AX,ES:[8000H]

15.运算结果SF,ZF,CF,OF各位的值(从左至右依次往下)

(1)74D4H 0 0 0 0

(2) A5C1H 1 0 0 1

(3) 4240H 0 0 1 0

(4) 0000H 0 1 1 0

16.接上表

(1) 5D14 0 0 0 0

(2) A870 1 0 0 1

(3) D870 1 0 0 0

(4) 34E4 0 0 1 0

17. (1)MOV AX,Z ;把Z送到AX

SUB AX,X ;Z-X

ADD AX,W ;W+(Z-X)

MOV Z,AX ;结果保存在Z中

(2)MOV AX,R ;R送到AX中

ADD AX,9 ;R+9

MOV BX,X ;X送到BX中

ADD BX,6 ;X+6

ADD AX,BX ;(R+9)+(X+6),结果保存在AX中

MOV BX,W ;W送到BX中

SUB BX,AX ;W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和

MOV Z,BX ;最终结果送到Z中

(3)

MOV AX,W ;把W送到AX

IMUL X ;W*X 注意:低十六位保存在AX里,高十六位保存在DX里

MOV BX,Y ;把Y送到BX 里

ADD BX,6 ;Y+6

IDIV BX ;(W*X)/(Y+6) 注意:商保存在AX里,余数保存在DX里

MOV Z,AX ;把商送到Z中,

MOV R,DX ;把余数送到R中

(4)

MOV AX,W ;把W送到AX中

SUB AX,X ;W-X

CWD ;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保存在DX中

MOV BX,5 ;把5送到BX中

IDIV BX ;(W-X)/5 被除数为32位,除数为16位商为16位

IMUL Y ;上一步结果再乖以Y,积为32位

MOV BX,2 ;把2送到BX中

IMUL BX ;上一步乘法所得的积再乘以2,各为64位

MOV Z,EAX ;把结果中低32位放入Z双字单元中

MOV [Z+4],EDX ;把结果中高32位放入Z+4双字单元中

18.

指令本条指令执行完后AX的内容执行完后CF,SF,ZF的值

MOV AX,1234H 1234H 0 0 0

MOV CL,4 1234H 0 0 0

ROL AX,CL 2341H 1 0 0

DEC AX 2340H 1 0 0

MOV CX,4 2340H 1 0 0

MUL CX 8918H 0 0 0

INT 20H

程序结束后,(AX)=8918H (DX)=0000H

19.

指令执行完后AX的内容执行完后CF ,SF,ZF和OF的值

MOV AX,0 0 0010

DEC AX FFFFH 0100

ADD 7FFEH 0000

ADD AX,2 8000H 0101

NOT AX 7FFFH 0101

SUB AX,0FFFFH 8000H 1101

ADD AX,8000H 0000H 1011

SUB AX,1 FFFFH 1101

AND AX,58D1H 58D1H 0000

SAL AX,1 B1A2H 0101

SAR AX,1 D8D1H 0100

NEG AX 272FH 1000

ROR AX,1 9397H 1001

20.

(1)MOV AX,DA TAX

ADD DATAY,AX

(2)MOV AX,DA TAX

ADD DATAY,AX

MOV AX,[DATAX+2]

ADD [DATAY+2] ,AX

(3)本組指令的作用是:BX <------[DATAX]+[DA TAY]+[1](CF的值) 帶進位加法~ (4)MOV AX,DA TAX

MUL DATAY ;結果的高十六位保存在DX裏,低十六位保存在AX裏

(5)MOV AX,DA TAX

MOV DX,[DATAX+2]

MUL DWORD DATAY ;結果的高三十二位保存在EDX裏,低三十二位保存在EAX 裏

(6)MOV AX,DA TAX

DIV 17H ;結果商保存在AL中,余數在AH中

(7)MOV AX,DA TAX

CDW

DIV DATAY

21. NEG DX

NEG AX

SBB DX,0

22.

MOV AX,A ;把雙字長數的低字放到AX中

MOV DX,[A+2] ;把雙字長數的高字放到DX中

TEST DX,8000H ;測試雙字長數的符號

JZ RIGHT ;如果是非負數,則直接保存

NEG DX ;如果是負數,則求補

NEG AX

SBB DX,0

RIGHT:MOV B ,AX

MOV [B+2],DX

23.每條指令單獨執行完後的結果依次為:

(1)9AH (2)61H (3)0FBH (4)1CH (5)0 (6)0E3H

24.執行指令序列後,BX的內容為:0DAH

25.

(1)把53D乘以2的程序:

MOV AX,35H ;53D=35H

SHL AX ,1

(2)把53除以2 的程序:

MOV AX,35H

SHR AX,1

26.這段程序完成的功能是:把DX:AX中的雙字數據左移4位(相當於乘以16D)

27.各條指令單獨執行後,DX的值依次為:

(1)5CH(2)17H(3)05C8H(4)72H(5)2017H(6)0CDH(7)0172H(8)05CCH (9)0DCH

28. 該程序段執行完後,BX寄存器的內容是:C02DH

29.(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:

LEA SI,CONAME ;把CONAME中第一个字节的偏移地址送到SI中

LEA DI,PRLINE ;把PRLINE中第一个字节的偏移地址送到DI中

MOV CX,20 ;把重复次数放到CX里

CLD ;让SI DI从低地址指向高地址(即从左到右传送)

REP MOVSB ;传送

(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现:

LEA SI ,CONAME

LEA DI,PRLINE

MOV CX,20

STD ;和上面唯一不同的就是这次是从右到左,所以要从高地址批向低地址

REP MOVSB

(3)把CONAME中的第三和第四個字節裝入AX的程序實現:

LEA SI ,[CONAME+3]

LODSW

(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現:

LEA DI ,[PRLINE+5]

STOSW

(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現:LEA DI,CONAME ;把CONAME中第一個字符偏移地址放入DI中

MOV CX,20 ;把重複次數放到CX中

MOV AL,20H ;把空格符的ASCII值放入AL中

CLD ;從低到高

REPNE SCASB ;比較

MOV BH,[DI-1]R ;把檢查到的空格符送到BH中

30.

MOV CX,12H ;把重複次數放到CX中。這裏用十六進制表示

MOV SI,0 ;初始化SI

MOV AX,26H ;把&字符的ASCII值放入AX

CHECK:CMP AX,STRING[SI] ;依次查找

INC SI

LOOPNE CHECK ;找到了就退出

MOV AX,20H ;把空格符的ASCII值勤放入AX中

MOV STRING[SI-1],AX ;用空格符代替&

31.(1)用空格符清除PRINT_LINE域的程序实现:

MOV AL,20H

LEA DI ,PRINT_LINE

MOV CX,132

CLD

REP STOSB

(2)在STUDENT_ADDR中查找第一个“_”的程序实现:

MOV AX,2DH ;把“—”的ASCII值放入AX

MOV SI,0 ;初始化SI

MOV CX,9 ;把重複次數放入CX中

;依次檢查STUDENT-ADDR中的字符是否為“_”,找到第一个停下来

CHECK:CMP AX ,STUDENT_ADDR[SI] ;

INC SI

LOOPNZ CHECK

(3)在STUDENT_ADDR中查找最后一个“_”的程序实现:

;和第二題不同的就是這次是從右到左查詢,所以SI的初始化為9

MOV AX,2DH

MOV SI ,9

MOV CX,9

CHECK :CMP AX,STUDENT_ADDR[SI]

DEC SI

LOOPNZ CHECK

(4)程序實現:

MOV AL,2OH ;把空格符的ASCII值放入AL中

LEA DI ,STUDENT_NAME ;把STUDENT_NAME中第一个字符偏移地址放到DI中MOV CX,30 ;把重复次数放到CX中

CLD ;让DI从低位移到高位

REPZ SCASB ;如果有不是空格符的,就退出

JZ STORE ;如果全是空格符,就转到STORE中

;用*代替空格

STORE:MOV AL 2AH

MOV CX ,30

STD ;注意,这里是把前面从低到高移动的DI再从高到低移上去

REP STOSB

(5)程序实现:

;把STUDENT_NAME 移到PRINT_LINE的前30个字节中

LEA SI,STUDENT_NAME

LEA DI,PRINT_LINE

MOV CX ,30

CLD

REP MOVSB

;把STUDENT_ADDR移到PRINT_LINE的后9个字节中

LEA SI ,[STUDENT_ADDR+9]

LEA DI,[PRINT_LINE+132]

MOV CX,9

STD

REP MOVSB

32.程序实现:

LEA SI,OLDS

LEA DI,NEWS

MOV CX,5

REPZ CMPSB

JNZ NEW_LESS

33.

(1)CMP DX,CX

JA EXCEED

(2)CMP BX,AX

JG EXCEED

(3)CMP CX,0

JZ ZERO

(4)CMP BX,AX

JO OVERFLOW

(5)CMP BX,AX

JLE EQ_SMA

(6) CMP DX,CX

JBE EQ_CX

34. (1)跳转到:L1

(2)跳转到L1

(3)跳转到L2

(4)跳转到L5

(5)跳转到L5

35.

(1)可以引起转移到L1的指令有:NB ,BE ,NL ,LE

(2)可以引起转移到L1的指令有:同上

(3)可以引起转移到L1的指令有: B,BE ,L ,LE

(4)可以引起转移到L1的指令有:NB ,NBE ,NL ,NLE

(5)可以引起转移到L1的指令有:同上

(6)可以引起转移到L1的指令有:同(3)

(7)可以引起转移到L1的指令有:同上

37.

MOV AL,STAUS[SI] ;把要测试的字节放到AL中

AND AL,2AH ;把第一,三,五位为一其他位为0的数--2AH,与这个字节比较,结果放到AL中

JZ ROUTINE_4 ;如果结果为0,则三位都为0

XOR AL,2AH ;前面相与的结果再与2AH异或

JZ ROUTINE_1 ;如果结果为0,则三位都为1

BSF BL,AL ;

BSR BL ,AL

CMP BL,CL

;如果向前和向后测试后,第一个1 的位置相同,说明只有一个1,则异或运算前有AL中有两个1

JE ROUTINE_2

ROUTINE_1

38.(1)当括号内是:LOOP时,循环四次,程序结束后

(AX)=05 (BX)= 16 (CX)=0 (DX)=0

(2)当括号内是:LOOPE 时,不循环,程序结束后

(AX)=02 (BX)=04 (CX)=03 (DX)=02

(3)当括号内是:LOOPNE 时:循环三次,程序结束后

(AX)=04 (BX)=11 (CX)=01 (DX)=0

39.P101

40.(1)0000 3100H (2)5100H (3)7100H

41.(1)目的地址:2004H 内容依次为:56H F4H 23H 98H

(2)目的地址:384CH 内容依次为:91H 34H F2H 01H

(3)目的地址:寄存器,无物理地址~ 内容依次为:92H 6DH A2H 4CH 42.(1)PUSH AX

(SP)<------(SP)-2

(SP+1)<-----(AH) (SP)<------(AL)

(2)POP ESI

(ESI)<-------((ESP)+3,(ESP)+2,(ESP)+1, (ESP))

(ESP)<-------(ESP)+4

(3)PUSH [BX]

(SP)<------(SP)-2

(SP+1)<-----([BX+1]) (SP)<------([BX])

(4) PUSHAD

(ESP)<-------(EAX)

(ESP-4)<-------(ECX)

(ESP-8)<-------(EDX)

(ESP-12)<-------(EBX)

(ESP-16)<-------(ESP) ;这里指的是指令执行前的ESP

(ESP-20)<-------(EBP)

(ESP-24)<-------(ESI)

(ESP-28)<-------(EDI)

(ESP)<-------(ESP)-32

(5)POP DS

(DS)<------((SP)+1,(SP))

(SP)<------(SP)+2

(6) PUSH 4

(SP)<-------(SP)-2

(SP+1)<-----0

SP)<------4

43.(1)2CE FF93H (2)24B 76A0H

(3)909 0804H (4)6F 13ADH

44. (1)0FFFF FFFCH (2)0FFFF FFF8H

(3)0000 0007H (4)0000 0099H

45. (EAX)=0 (EBX)=25d

46. (AX)=3d (DX)=7d

47. ADD ECX,EDX

ADD ECX,ESI

MOV EDI ,ECX

48. IMUL BX,DX,100H执行的操作是:

(BX)<-------(DX)*100H

49.程序实现:

MOV AL,BL

CBW

IDIV CL

IMUL 2

MOV DX,AX

50.

JMP DI 是直接跳转,执行的操作是:(IP)<-----(IP)+(DI)

JMP [DI]是间接跳转,执行的操作是:(IP)<----(IP)+([DI])跳转到DI中所指向的内存单元中的指令地址

51.假设数组名为NUMBERS,程序如下

MOV BX,0 ;后面用到

MOV CX,100H ;把循环次数放入CX

MOV AL,42H

MOV SI,0 ;初始化SI

;CHECK 用来实现查找功能~

CHECK :CMP AL ,NUMBERS[SI]

INC SI

JB STORE1 ;大于42H的数的个数存入UP

JA STORE2 ;小于42H的的数的个数存入DOWN中

LOOP CHECK ;相等继续循环

STORE1 INC BL ;找到一个大于42 的数,BL值增加1

MOV UP,BL

LOOP CHECK

STORE2 INC BH

MOV DOWN ,BH

LOOP CHECK

第四章

1.指令下列指令的错误

(1)MOV AH,BX 源操作数与目的操作数长度不相同~

(2)MOV [BX],[SI] 这是两个内存单元在传递数据,而这在汇编语言中是不允许的

(3) MOV AX,[SI][DI] 不能用两个变址连用,其中一个应为基址

(4)MOV MYDAT[BX][SI],ES:AX 同(2)

(5)MOV BYTE PTR[BX],1000 必须有一个为寄存器

(6)MOV BX,OFFSET MYDA T[SI] OFFSET 不能与复杂操作数相连

(7)MOV CS,AX 不能对CS赋值

(8)MOV ECX,AX 操作数类型不同

2.(1)合法(2)非法(3)非法(4)非法

3.(1)非法,操作数类型不同

(2)合法

(3)非法,不允许两个内存单元直接传递数据

(4)合法

(5)合法

(6)合法

(7)非法,必须有一个寄存器

(8)非法,两个内存单元地址相加没有意义

(9)合法

(10)非法,同(3)

4.(1)两内存单元传递数据

(2)操作数类型不同

(3)跳转指令只能跳转到符号地址

(4)转移指令后不能为变量,只能为标号

(5)格式不对,应为NEAR PTR

6.(1)DW 5150H

(2)MOV AX,5150H

MOV ADDRESS ,AX

7. DATASG SEGMENT

FLD1B DB 'personal computer'

FLD2B DB 10 DUP (32)

FLD3B DB 20H

FLD4B DB 01011001B

FLD5B DB '32654'

FLD6B DB 10 DUP (0)

FLD7B DB 'PART1',DUP 20 (?),'PART2',DUP 50 (?),'PART3',DUP 14 (?) FLD1W DW 0FFF0H

FLD2W DW 01011001B

FLD3W DW FLD7B

FLD4W DW 5,6,7,8,9

FLD5W DW 5 DUP (0)

FLD6W DW (FLD6W-FLD1W)-(FLD7B-FLD1B)

8.PLENTH 的值为22,GE表示该数据段的长度

9.L的值为7

10.(1)MOV AX,OFFSET LNAME

(2)MOV SI,WORD PTR CODE_LIST

(3)CODE_LENGHT EQU $-CODE_LIST

11.代码如下:

DA TA_SEG SEGMENT

DB 5

DA TA_LIST DW 0FFFFH, 0,2,5,4, 5 DUP (?)

DA TA_SEG ENDS

CODE_SEG SEGMENT

ASSUME CS: CODE_SEG, DS:DATA_SEG

MOV AX, 5

MOV MAX, AX

MOV AX, 0FFFFH

MOV MIN, AX

CODE_SEG ENDS

12.(1)10025(2)19(3)2548(4)3(5)103(6)0FFFFH(7)1(8)3

13.分别汇编成为:

MOV AX,0AH

MOV BL,0AH

MOV CL,1

14.(1)(AX)=1(2)(AX)=2(3)(CX)=14H(4)(DX)=32H(5)(CX)=1]

15.(1)操作符错误改为:DATA_SEG SEGMENT

(2)缺少段名在前面加个段名

(3)引用应该从;开始把那个“/”改成“;”

(4)结构混乱改为:

MAIN_PROC PROC FAR

……

MAIN_PROC ENDP

END

16.程序框架如下:

DA TA_SEG SEGMENT ;定義數據段

ORG 0E000H ;讓下一字節地址為0E000H

FIRST_TYPE EQU THIS WORD ;建立一個與下一存儲單元有相同段地址和偏移地址的操作數

DA TA_GROUP DB 100 DUP(?) ;給DATA_GROUP 分配100個字節的空間

DA TA_SEG ENDS ;數據段結束

STACK_SEG SEGMENT ;定義堆棧段

ALIGN 16 ;讓下一字節從小段首地址開始

STACK DB 100 DUP (?) ;為堆棧分配空間

STACK_SEG ENDS ;

CODE_SEG SEGMENT

ASSUME CS:CODE_SEG ,DS:DA TA_SEG ,SS:STACK_SEG

ORG 1000H ;讓下條指令的第一個字節從1000H開始

START : MOV AX,DATA_SEG

MOV DS,AX

MOV AX,STACK_SEG

MOV SS,AX

.......

CODE_SEG ENDS

END START ;結束

17。程序如下:

D_SEG SEGMENT ;数据段定义

AUGEND DD 99251

D_SEG ENDS

E_SEG SEGMENT ;附加段定义

ADDEND DD -15926

E_SEG ENDS

C_SEG SEGMENT ;代码段定义

ASSUME CS:C_SEG , DS:D_SEG,ES:E_SEG

START: MOV AX,D_SEG

MOV DS,AX

MOV AX,E_SEG

MOV ES,AX

MOV EAX,DS:AUGEND

ADD EAX,ES:ADDEND

MOV DS:SUM,EAX

C_SEG ENDS

END START ;结束

19.需要加上PTR伪操作的有:(2)(3)(4)

第五章

1.程序實現:(經DEBUG調試通過)

code segment

main proc far

assume cs:code

start:

mov ah,1h

int 21h

sub al,20h

mov ah,2

mov dl,al

int 21h

main endp

code ends

end start

2.程序實現:(經DEBUG調試通過)

code segment

assume cs:code

mov ah,1h

int 21h

sub al,1h

mov cl,3

again:

mov dl,al

mov ah,2

int 21h

inc al

loop again

code ends

end

3.程序實現:(經DEBUG調試通過)

code segment

assume cs:code

mov ax,0f0feh

mov cl,4 ;把AX的最高四位

rol ax,cl ;移到最右面

and al,0fh ;再把AL的高四位清0

mov dl,al

rol ax,cl

and al,0fh

mov cl,al

rol ax,cl

and al,0fh

mov bl,al

rol ax,cl

and al,0fh

code ends

end

4.程序實現:(經DEBUG調試通過~~)

data segment

string1 db 20,0,20 dup (?)

string2 db 20,0,20 dup (?)

string3 db 'please input string1!','$'

string5 db 'match!','$'

string6 db 'nomatch!','$'

data ends

code segment

MAIN PROC FAR

assume cs:code, ds:data

start:

push ax ;保護現場

push bx

push cx

push dx

mov ax,data

mov ds,ax

mov dx,offset string3

call info ;在屏幕上輸出提示信息

mov dx,offset string1

call input ;在第一緩衝區輸入字符串

mov dx,offset string4

call info ;在屏幕上輸出提示信息

mov dx,offset string2

call input ;在第二緩衝區輸入字符串

call check ;比較兩個字符串

pop dx ;寄存器出棧

pop cx

pop bx

pop ax

main endp

;輸入字符串到緩衝區的過程

INPUT PROC NEAR

push ax

mov ah,0AH

int 21h

pop ax

ret

INPUT ENDP

;在屏幕上輸出提示信息的過程

INFO PROC NEAR

push ax

mov ah,9

int 21h

call crlf ;回車換行

pop ax

ret

INFO ENDP

;回車換行的過程

CRLF PROC NEAR

push dx

push ax

mov dl,0dh

mov ah,2

int 21h

mov dl,0ah

mov ah,2

int 21h

pop ax

pop dx

ret

CRLF ENDP

;比較兩字符串是否相同並且在屏幕上輸出相應信息的過程CHECK PROC NEAR

push ax

push cx

push si

push di

mov ax,0

mov cx,0

mov cl,string1+1

mov si,2

mov di,2

re:

mov al,string1[di]

cmp al,string2[si]

jnz no

inc di

inc si

dec cx

jnz re

mov dx ,offset string5

call info

jmp exit

no:

mov dx,offset string6

call info

exit:

pop di

pop si

pop cx

pop ax

ret

CHECK ENDP

code ends

end start

5.程序實現:(經DEBUG調試通過)

data segment

info1 db 'PLEASE INPUT A NUMBER','$' ;提示信息,下同

info2 db 'WRONG NUMBER! PLEASE INPUT ANOTHER NUMBER!','$' ;如果鍵入非數字值,報錯,並提示輸入新的數字

data ends

code segment

MAIN PROC FAR

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov dx,offset info1

call info ;提示輸入一個數字

call input ;輸入過程

call check ;檢查是否非數字字符

call bell ;響鈴N次,N為鍵入數字

ret

MAIN ENDP

;在屏幕上輸出提示信息的過程

INFO PROC NEAR

push ax

mov ah,9h

int 21h

call crlf

pop ax

ret

INFO ENDP

;回車換行的過程

CRLF PROC NEAR

push ax

push dx

mov dl,0dh

mov ah,2h

int 21h

mov dl,0ah

mov ah,2h

int 21h

pop dx

pop ax

ret

CRLF ENDP

;輸入的過程

INPUT PROC NEAR

mov ah,1

int 21h

ret

INPUT ENDP

;檢查是否非數字字符的過程~

CHECK PROC NEAR

push dx

cmp al,30h ;如果鍵入的字符ASCII值小於0的ASCII值30H,

jb WRONG ;剛轉入WRONG,作錯誤處理

cmp al,39h ;如果鍵入的字符ASCII值大於9的ASCII值39H,ja WRONG ;則轉入WRONG,作錯誤處理

mov cl,al ;把合法的數字ASCII值放入CL中

jmp next

;錯誤處理過程,提示,並等待用戶鍵入新值

WRONG:

mov dx,offset info2

call info

call input

call check

next:

pop dx

ret

CHECK ENDP

;根據用戶鍵入的數字,響鈴相應的次數

BELL PROC NEAR

push dx

sub cl,30h ;鍵入數字的ASCII值減去30,才能成為次數

mov dl,7h

mov ah,2

re:

int 21h

dec cx

jnz re

pop dx

ret

BELL ENDP

CODE ENDS

END START

6.程序實現。(末经调试)

.model small

.data

m db dup (20個數)

n db 20,0,20 dup (?) ;用于存放负数的最大容量为20的数组 p db 20,0,20 dup (?) ;同上,用于存放正数

.code

main proc far

start:

mov ax,@data

mov ds,ax

call check_store ;判斷數的正負並存入相應數組

call display ;在屏幕上顯示

main endp

check_store proc near

push ax

push bx

push cx

mov cx,20 ;循環次數放入CX

cld ;使SI向增加的方向移動

lea si,m ;M的偏移地址放入SI

again:

mov al,[si] ;M中的數依次放入AL中

cmp al,0 ;並且依次和0比較

jl store_in_n ;如果小於0,則存入負數組

jg store_in_p ;如果大於0,剛存入正數組

dec cx

jz exit

store_in_n :

push bx

mov bl,n[1] ;N中已有數的個數放入BL中,

mov n[bl+1],al ;把AL中負數存入數組N的最後一個數字的下一字節 pop bx

jmp again

store_in_p

STORE—IN—P

push bx

mov bl,p[1]

mov p[bl+1],al

pop bx

jmp again

exit:

pop cx

pop bx

pop ax

ret

check_store endp

display proc near

push cx

lea si,n[2]

mov cl,n[1] ;數組N中數的個數放入CL

cld

mov ah 2

re_display_n: ;依次顯示各個負數

mov dl,[si]

int 21h

mov dl,20h ;各個數之間用空格間隔

int 21h

dec cl

jnz re_display_n

;下面四行用來回車和換行

mov dl,0dh

int 21h

mov dl,0ah

int 21h

;同上面負數的顯示,

lea si,p[2]

mov ch,p[1]

cld

re_display_p:

int 21h

mov dl,20h

int 21h

dec ch

jnz re_display_p

pop cx

ret

display endp

end start

7.程序實現。(未調試)

.model small

.data

data db 100d dup (100個數).

.code

start:

mov ax,@data

mov ds,ax

mov cx,101d ;循環次數

mov bl,0feh ;初始化BX為最大的八位無符號正數 mov si,offset data

cld

again:

dec cx

jz finish ;全部判斷完成

mov al,[si]

cbw

div 2 ;每個數除以2

cmp al,0 ;佘數不為0的,不是偶數

jne again

cmp bl,[si] ;每次比較,

jl again ;較小的數,

mov bl,[si] ;代替BX中原來的數

jmp again

finish:

mov ax,0

mov al,bl ;把最小偶數放到AX中

end start

8.程序實現。(未調試)

.model samll

.code

start:

mov ch,9 ;比較次數放入CH

mov cl,2 ;每次AX循左移的次數放入CL

汇编语言程序设计练习题

汇编语言程序设计练习题 一、字符与串处理类 1.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

汇编语言程序的设计试卷与答案

汇编语言程序设计试卷 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。 ① 无符号十进制数136 ② 带符号十进制数-120 ③ 压缩型BCD码十进制数88 ④ 8位二进制数-8的补码表示 2.指令指针寄存器是()。 ① IP ② SP ③ BP ④ PSW 3.当执行指令ADD AX,BX后,若AX的内容为2BA0H, 设置的奇偶标志位PF=1,下面的叙述正确的是()。 ① 表示结果中含1的个数为偶数 ② 表示结果中含1的个数为奇数 ③ 表示该数为偶数 ④ 表示结果中低八位含1的个数为偶数 4.完成将累加器AL清零,并使进位标志CF清零, 下面错误的指令是()。 ① MOV AL,00H ② AND AL,00H

③ XOR AL,AL ④ SUB AL,AL 5.下列指令执行后总是使CF=0,OF=0的是()。 ① AND ② NEG ③ NOT ④ INC 6.完成同指令XCHG AX,BX相同功能的指令或指令序列是()。 ① MOV AX,BX ② MOV BX,AX ③ PUSH AX POP BX ④ MOV CX,AX MOV AX,BX MOV BX,CX 7.设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL AAA 之后,其结果应是()。 ① AH=01,AL=05 ② AH=1 AL=15 ③ AH=0 AL=0FH ④ AH=0 AL=05 8.设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为

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

一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。) 1.为在一连续的存储单元中,依次存放数据41H,42H,43H,44H,45H,46H,可选用的数据定义语句是(D) A.DB 41,42,43,44,45,46 B.DW 4142H,4344H,4546H C.DW ‘AB’,‘CD’,‘EF’D.DW ‘BA’,‘DC’,‘FE’ 2.DA2 DB‘AB’,‘CD’ ┇ MOV AX,WORD PTR DA2+1 上述语句执行后AX中的值是(D) A.‘AD’B.‘BC’ C.‘DA’D.‘CB’ 3.下列数据定义语句中可实现留空20H个字节存储单元的是(D) A.DB 20 DUP(?) B.DW 20H DUP(?) C.DB 10H DUP(4 DUP(?)) D.DD 08H DUP(?) 4.如某存储器分段时,表示偏移地址是17位二进制代码,那么一个段最多的存储单元数是(D) A.32K字节B.32K字 C.64K字节D.64K字 5.下列寄存器中用来指示堆栈中任意数据区的偏移地址的是(B)A.BX B.BP C.SI D.DI 6.下列指令中有语法错误的是(C) A.PUSH AX B.PUSH [20H+SI+BX] C.POP CS D.PUSH CS 7.执行PUSH BP指令时,目的操作数的物理地址表达式是(D) A.16*SS+BP B.16*DS+BP C.16*CS+IP D.16*SS+SP 8.把BL中的数据输出到端口8CH中正确指令是(C) A.OUT 8CH,BL B.IN 8CH,BL C.MOV AL,BL D.MOV AL,BL OUT 8CH,AL IN 8CH,AL 9.结果为零的条件转移指令,其测试条件是(A) A.ZF=1 B.ZF=0 C.SF=l D.SF=0 10.下面程序段完成测试DA-BYTE字节单元中数是否为负数,若是则将全l送DH中,否则全0送DH中,那么程序段中方框里应填的语句是 MOV CH,0 MOV CH,0FFH ZERO:MOV DH,CH(C) A.JNZ ZERO B.JS ZERO

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

汇编语言程序设计期末考试题

汇编语言程序设计期末考试题 学院(系):学号: 姓名: 计分: 一、项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号 内。每小题1分,共10分) 1.CPU发出的访问存储器的地址是( ) A.物理地址 B.偏移地址C.逻辑地址D.段地址 2.将高级语言的程序翻译成机器码程序的实用程序是( ) A.编译程序 B.汇编程序 C.解释程序 D.目标程序 3.DEC BYTE PTR[BX]指令中的操作数的数据类型是( ) A.字 B.双字C.字节D.四字 4.在下列语句中,BUFFER称为( ) BUFFER DB 01H,0AH A.符号 B.变量 C.助记符D.标号 5.串操作指令中,源串操作数的段地址一定在( )寄存器中。 A. CS B. SS C. DS D. ES 6.使计算机执行某种操作的命令是( ) A.伪指令B.指令 C.标号D.助记符 7.将数据5618H存放在存储单元中的伪指令是( ) A. DATA1 DW 1856H B. DATA1 DB 18H,56H C. DATA1EQU 5618H D. DATA1 DB 18H,00H,56H,00H 8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( ) A.1400H B. 77F8H C. 0000H D. 0FFFFH 9.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍 采用的是( )码。 A. BCD码 B.二进制码 C.ASCII码D.十六进制码 10.用指令的助记符、符号地址、标号和伪指令、宏指令以及规定的格式书写程序的语 言称为( ) A.汇编语言 B.高级语言 C.机器语言 D.低级语言 二、填空题(每空1分,共20分) 1.在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令的助记符是______。 2.通常所说的计算机系统包括________和________两大部分。 3.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是________、_____ ___、________、________。 4.现有AX=2000H,BX=1200H, DS=3000H, DI=0002H, (31200H)=50H,(31201H)=02H, (31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标 志位ZF、CF的值。 A.ADDAX,1200H;问AX=________H,ZF=________

汇编语言程序设计课后习题解答宋人杰2版

第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

最全毛概慕课课后题答案

2016慕课毛概最全答案 第一章 1.1.马克思主义中国化的科学内涵 1 毛泽东在明确提出“使马克思主义中国化”的命题和任务是在 A、遵义会议 B、中共六届六中全会 C、中共七大 D、中共七届二中全会 正确答案:B 我的答案:B 得分:16.7分 2 在党的七大上,对“马克思主义中国化”、“中国化的马克思主义”两大科学命题加以阐释的党的领导人是 A、毛泽东 B、周恩来 C、邓小平 D、刘少奇 正确答案:D 我的答案:D 得分:16.7分 3 中国共产党确定毛泽东思想为指导思想的会议是 A、遵义会议 B、党的第七次全国代表大会 C、党的第八次全国代表大会 D、中共十一届六中全会 正确答案:B 我的答案:B 得分:16.7分 4 马克思主义中国化的理论成果的精髓是 A、实事求是 B、毛泽东思想 C、邓小平理论 D、“三个代表”重要思想 正确答案:A 我的答案:A 得分:16.7分 5 中国共产党在把马克思列宁主义基本原理与中国革命实际相结合的过程中,在学风问题上曾经反对过的主要错误倾向是

A、投降主义 B、经验主义 C、教条主义 D、冒险主义 正确答案:BC 我的答案:AC 得分:0.0分 6 毛泽东思想和中国特色社会主义理论体系都是中国化的马克思主义,它们都 A、体现了马克思列宁主义的基本原理 B、包含了中国共产党人的实践经验 C、揭示了中国革命的特殊规律 D、包含了中华民族的优秀思想 正确答案:ABD 我的答案:AB 得分:8.4分 1.2.毛泽东主义的科学内涵和形成条件 1 在毛泽东思想活的灵魂的几个基本方面中,最具特色、最根本的原则是 A、实事求是 B、群众路线 C、理论联系实际 D、独立自主 正确答案:A 我的答案:A 得分:20.0分 2 下面关于毛泽东思想的论述不正确的是pA、毛泽东思想是毛泽东同志个人正确思想的结晶 B、毛泽东思想是马克思主义中国化第一次历史性飞跃的理论成果 C、毛泽东思想是中国革命和建设的科学指南 D、毛泽东思想是中国共产党和中国人民宝贵的精神财富 正确答案:A 我的答案:A 得分:20.0分 3 毛泽东思想的核心和精髓是 A、武装斗争 B、统一战线 C、党的建设 D、实事求是 正确答案:D 我的答案:D 得分:20.0分 4 毛泽东思想形成的标志是 A、实事求是 B、遵义会议

汇编语言程序设计试题A卷

陕西电子信息职业技术学院考试试卷(A) 2011至2012学年度第一学期 期末 班级: 09成教 课程: 汇编语言程序设计 题 号 一 二 三 四 五 合分人 分 数 总 分 (考试时间:120分钟 满分100分) 一、单项选择题(本大题共10小题,每小题2分,共20分) 1. 计算机硬件中最核心的部件是( )。 A. 运算器 B. 主存储器 C. CPU D. 输入 / 输出设备 2. 指令指针寄存器(IP )中存放的内容( )。 A. 指令 B. 指令地址 C. 操作数 D. 操作数地址 3. 寄存器间接寻址方式中,要寻找的操作数位于( )中。 A. 通用寄存器 B. 内存单元 C. 段寄存器 D. 堆栈 4. I/O 端口的编址方式分为统一编址和( )。 A. 独立编址 B. 选择编址 C. 设置编址 D. 控制编址 5. 汇编语言程序中可执行的指令位于( )中。 A. 数据段 B. 堆栈段 C. 代码段 D. 附加数据段 6. 循环结构设计中,要考虑的核心问题是( )。 A. 循环的控制 B. 选择循环结构 C. 设置循环参数初始值 D. 修改循环控制参数 7. 在汇编中用于管理和控制计算机相关功能的指令是( )。 A. 伪指令 B. 机器指令 C. 宏指令 D. 目标指令 班级 姓名 学号 — — — — — — — — — — — — — — — — 密 — — — — — — — — — 封 — — — — — — — — — — 线 — — — — — — — — — — — — — — — —

8. 识别中断源的方法包括查询中断和()共两种类型。 A. 指令中断 B. 故障中断 C. 矢量中断 D. 实时时钟中断 9. CPU与I/O设备之间需要传输的信息通常包括()、状态信息 和控制信息。 A. 编址信息 B. 格式信息 C. 中断信息 D. 数据信息 10. 一般情况下,汇编源程序应由数据段、()和代码段共三个逻 辑段组成。 A. 逻辑段 B. 堆栈段 C. 指令段 D. 类型段 二、名词解释(本大题共5小题,每小题4分,共20分) 11. 微处理器: 12. 寻址方式: 13. 伪指令: 14. 中断源:

体育慕课考试答案

1、20世纪70年代,人们就已发现,高达50%的疾病或死亡因素与什么有关? 行为及不健康的生活方式 2哪一年在上海成立的精武体育会是当时影响最大,传播最广,维持时间最长的武术组织?1910 3.网球比赛的第一原则是什么? 增加进攻(这个不确定,是根据网球老师说的选的) 4. 网球比赛中要赢得一局比赛,必须比对手多赢几分才可以? 2分 5. 联合国报告认为什么将会是21世纪最严重的健康问题? 体质下降 6. 国际羽联在哪一年正式恢复了我国的合法席位后,开始了我国羽毛球运动的鼎盛时期。1981 7. 哪一个季节人体脂肪合成速度最快? 冬天 8. 哪一年被世界公认为现代足球的诞生日? 1863 9. 下列哪位运动员是新中国历史上第一个获得世界锦标赛冠军的运动员? 容国团 10.在哪届奥运会上,乒乓球成为正式比赛项目? 汉城奥运会 11.篮球规则规定,篮圈离地垂直高度为多少? 3.05米 12. 1895年,由美国人()发明了排球运动。 威廉·G·摩根

13,。有助于提高肌肉力量的训练方法有哪些? 卧推 14.下列不易于发展柔韧素质的练习时段或状态有哪些?(这个也不清楚,是看它字体颜色不一样)身体极其疲惫 15.20世纪50年代末期,巴西人创造了哪种阵型被誉为足球史上的第二次变革。 “四二四”阵形 16.曾经在NBA总决赛中受伤,坚持参加比赛最后获得冠军并取得最有价值称号的凯尔特人球星是()? 保罗皮尔斯 17.体育锻炼与传统心理治疗手段同样具有抗抑郁效能,是治疗抑郁症的()手段;体育锻炼治疗抗抑郁症的效果与药物相比比较()。 辅助;持久 18.在运动中不慎扭伤,下列做法不正确的是() 马上揉搓患处 19.20XX年伦敦奥运会羽毛球囊括多少枚金牌? 5 20.“让参与者成为享受运动,实现人生潜能的一代”是哪一个健康促进的愿景? 为动而生 21.减小肚皮应采用哪一类运动? 长时间低强度 22.棍多以抡、劈、扫、云等法为主,大多是横方向用力,动作幅度较大,其特点:一招一式虎虎生威,动如疾风骤雨,产生"棍打一大片"的效果。棍被称为() 百兵之首 23.作为当下盛行的舞蹈元素,以人体中段(腰、腹、臀部)的各种动作为主,具有阿拉伯风情的舞蹈形式是()。肚皮舞

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

汇编语言程序设计试题

汇编语言程序设计试题 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.设SS=2050H,SP=0140H,则栈顶存贮单元的物理地址是( A ) A.20640H B.2063EH C.2063FH D.21900H 2.使用DOS功能调用时,子程序编号应放在( B ) A.AL B.AH C.AX D.任意指定 3.没有 ..语法错误的输出指令是( B ) P76 A.OUT AX,30H B.OUT DX,AL C.OUT AL,DX D.OUT 30H,AH 4.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是( B ) A.MOV AX,89 B.MOV AX,0809H C.MOV AX,89H D.MOV AX,0809 5.设AX=8765H,DX=4321H,执行CWD指令后,DX中的内容是( B ) P117 A.4321H B.0FFFFH C.8000H D.0001H 6.设CL=05H,要获得CL=0AH,可选用的指令是( A) A.XOR CL,0FH B.NOT CL C.OR CL,0AH D.AND CL,0FH 7.假设执行ADD指令后AL=8CH,再执行DAA指令,AL中的值是( A ) A.92H B.0104H C.74H D.8CH 8.MOV AL,79H ADD AL,B1H 上面指令执行后,设置的标志位CF和ZF的值是( D ) A.CF=0,ZF=1 B.CF=l,ZF=1 C.CF=0,ZF=0 D.CF=1,ZF=0 9.TEST DL,55H P123 JZ NEXT NEXT:…… … 上述程序段,执行JZ指令时能产生转移的情况是( D ) A.DL>55H B.DL<55H C.DL=55H D.DL中第0、2、4、6位均为0 10.假设AL=28H, 执行ROL AL,1 指令之后的情况是( D ) P125 A.AL=14H, CF=1 B.AL=50H, CF=1 C.AL=14H, CF=0 D.AL=50H, CF=0 11. 98的BCD码是(B) A)10011001 B) 10011000 C) 10011010 D) 10001010 12. –0110110 的补码是(A) A) 11001010 B) 11001001 C) 10110110 D) 00110110

汇编语言程序设计实验篇emu

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.doczj.com/doc/2f14686098.html, TEMPLATE程序 本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。 输入全部指令后,单击按钮,保存相应的程序段。 2.EXE TEMPLATE程序 本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。 在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

全国1月高等教育自学考试汇编语言程序设计试题历年试卷

做试题,没答案?上自考365,网校名师为你详细解答! 全国2005年1月高等教育自学考试 汇编语言程序设计试题 课程代码:02321 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填 在题干的括号内。每小题1分,共16分) 1.已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是( )。 A.2025∶0F2A B.2108∶00EA C.2000∶017A D.2100∶117A 2.某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是( )字节。 A.2K B.4K C.8K D.16K 3.以寄存器DI间接寻址的存储器字节单元内容加1的指令是( )。 A.INC [DI] B.INC DI C.INC BYTE PTR[DI] D.ADD [DI],1 4.有语句:COUNT EQU 256,下列四种叙述中,正确的是( )。 A.COUNT是变量 B.COUNT占用一个字节存储单元 C.COUNT是符号常数 D.COUNT占用二个字节存储单元 5.下面指令中,源操作数的寻址方式为立即寻址的是( )。 A.MOV AX,OFFSET A B.MOV AX,A C.MOV AX,A+1 D.MOV AX,A[BX] 6.已知SP=2110H,执行POP AX后,SP寄存器的值是( )。 A.2111H B.2112H C.210FH D.210EH 7.将AX中有符号数除以2的正确指令是( )。 A.SHR AX,1 B.SAR AX,1 C.ROR AX,1 D.RCR AX,1 8.比较BX和SI中的两个存储器地址,若BX≥SI转向HIGH的正确指令是( )。 A.JAE HIGH B.JBE HIGH C.JEG HIGH D.JLE HIGH 9.指令SCASB操作数的段地址一定在( )寄存器中。 A.CS B.DS C.ES D.SS 10.有数据定义语句BUF DW 0ABH,1,10 DUP(3 DUP(1,0),2)汇编后,为变量BUF分配 的存储单元字节数是( )。 A.48H B.90H C.120 D.60 11.下列指令执行后,不改变AL寄存器内容的指令是( )。 1

汇编语言程序设计试题

汇编语言程序设计试题 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2分,共50分) 1.CPU发出的访问存储器的地址是( A ) A.物理地址 B.偏移地址 C.逻辑地址 D.段地址 2.使计算机执行某种操作的命令是( B ) A.伪指令 B.指令 C.标号 D.助记符 3.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=(A) A. 1400H B. 77F8H C. 0000H D. 0FFFFH 4.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是( C)码。 A. BCD码 B.二进制码 C.ASCII码 D.十六进制码 5.下列关于8086CPU的工作原理的描述错误的是__C___。 A.汇编程序员可以通过对各种寄存器中内容的修改实现对CPU的控制。B.CPU在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理地址。 C.任意时刻,CS:IP指向的内容即是此刻CPU正在执行的指令。 D.传送指令能够更改所有通用寄存器的内容。 6.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是(C) A.12CFBH B.12B6BH C.12C5BH D.12BFEH 7. 16位结构的CPU 不一定具备的特性是(D)。 A. 运算器一次最多可以处理16位的数据 B. 寄存器的最大宽度为16位 C. 寄存器和运算器之间的通路为16位 D. 地址总线为16根 8. 下列指令的书写正确的是(C)。 A. push al B. mov cs:[0],ds:[10] C. pop si D. mov ds:[0],2 9.在DEBUG工具中,显示寄存器内容的命令是( D )。 A. G B. D C. T D. R 10. 能够将ax中的内容送到内存0000:0200H处的指令序列是(D)。

慕课测试题答案

1计算之树中,通用计算环境的演化思维是怎样概括的?________。 A.程序执行环境—由CPU-内存环境,到CPU-存储体系环境,到多CPU-多存储器环境,再到云计算虚拟计算环境 B.网络运行环境---由个人计算机、到局域网广域网、再到Internet C.元器件---由电子管、晶体管、到集成电路、大规模集成电路和超大规模集成电路 D.上述全不对 正确答案:A

2计算之树中,网络化思维是怎样概括的________。 A.局域网、广域网和互联网 B.机器网络、信息网络和人-机-物互联的网络化社会 C.机器网络、信息网络和物联网 D.局域网络、互联网络和数据网络 正确答案: B

3人类应具备的三大思维能力是指_____。 A.抽象思维、逻辑思维和形象思维 B.实验思维、理论思维和计算思维 C逆向思维、演绎思维和发散思维 D.计算思维、理论思维和辩证思维 正确答案:B

4如何学习计算思维?_____。 A.为思维而学习知识而不是为知识而学习知识 B.不断训练,只有这样才能将思维转换为能力 C.先从贯通知识的角度学习思维,再学习更为细节性的知识,即用思维引导知识的学习 D.以上所有 正确答案:D

5自动计算需要解决的基本问题是什么?_______。 A.数据的表示,数据和计算规则的表示 B.数据和计算规则的表示与自动存储 C数据和计算规则的表示、自动存储和计算规则的自动执行D.上述说法都不正确 正确答案:C

6计算机器的基本目标是什么? _______。 A.能够辅助人进行计算,能够执行简单的四则运算规则 B.能够执行特定的计算规则,例如能够执行差分计算规则等 C.能够执行一般的任意复杂的计算规则 D.上述说法都不正确 正确答案:C

汇编语言程序设计题库

汇编语言程序设计题库 一.选择题(100选20个每个1,共20分) 1. 1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 A. 10 B.11 C.12 D.13 2.在存储器中,数据和程序以形式存放。 A.二进制 B.十进制 C.八进制 D.十六进制 3.CPU要访问的某一存储单元的实际地址称 A.段地址 B.偏移地址 C.物理地址 D.逻辑地址 4.某存储单元的物理地址是12345H,可以作为它的段地址的有 A.2345H B.12345H C.12340H D.1234H 5.设物理地址(21000H)=20H ,(21001H)=30H,(21002H)=40H。如果从地址21001H 中取出一个字的内容是 A. 2030H B.3040H C.3020H D.4030H 6.在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址为() A. 3017BH B. 30170H C. 3017AH D. 30210H 7.在DEBUG工具中,单步执行指令的命令是()。 A. G B. D C. T D. R 8. 在DEBUG工具中,显示寄存器内容的命令是()。 A. G B. D C. T D. R 9.若栈顶的物理地址为20100H,当执行完指令PUSH AX后,栈顶的物理地址为()。 A. 20098H B. 20102H C. 200FEH D. 20100H 10.若栈顶的物理地址为20100H,当执行完指令POP AX后,栈顶的物理地址为()。 A. 20098H B. 20102H C. 200FEH D. 20100H 11.如代数据段名为DATA_SEG,它的起始地址为20A00H,对数据段寄存器DS赋值段地址值的方法是()。 A. MOV DS,20A0H B. ASSUME DS:DATA_SEG C. DATA_SEG SEGMENT D. MOV AX,DATA_SEG MOV DS,AX 12.执行PUSH BP指令时,源的操作数的物理地址表达式是() A.16*SS+BP B.16*DS+BP C.16*CS+IP D.16*SS+SP 13.用户为了解决自己的问题,用汇编语言所编写的程序,称为() A目标程序B源程序C可执行程序D汇编程序 14.已知AX=8065H,BX=103AH,则指令ADD BL,AL执行后,OF和CF的值分别为()。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 15. 当CX=0时,REP MOVSB执行的次数为。( ) A. 1次 B. 0次 C. 25535次 D. 25536次 16.条件转移指令JB产生程序转移的条件是() A.CF=1 B.CF=0 C.CF=1和ZF=1 D.CF=1和ZF=0 17.设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。执行SBB AL,[SI]后,正确的结果是() A.AL=5FH SF=1 CF=1 B.AL=60H SF=1 CF=0

《汇编语言程序设计》期末复习题答案_57431457509182192

《汇编语言程序设计》复习题(答案指导/带页号)一、选择(30题) 1.下列是8位带符号二进制数的补码,其中最大的是( B )。参见P22 A、10001000 B、00000001 C、00000000 D、11111111 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现 ( C )参见P157、158 A、占内存空间小,但速度慢 B、占内存空间相同,速度快 C、占内存空间大,但速度快 D、占内存空间相同,速度慢 3.数据定义为:EE DB 3,4 CC DW 3456H,6789H 执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B )参见P27、63、64 A、0304H B、5604H C、3404H D、3456H 4.有如下指令序列: MOV AL,95H MOV CL,2 SAR AL,CL 上述指令序列执行后,AL的内容是( D )参见P95 A、05H B、25H C、24H D、0E5H 5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )参见P23、15 A、A>B>C B、 A

相关主题
文本预览
相关文档 最新文档