当前位置:文档之家› 汇编作业及参考答案

汇编作业及参考答案

作业11.1 将十进制数89转换成8位无符号二进制数。

1.2 将无符号二进制数1001 0010转换成十进制和十六进制。

1.3 将8位二进制数1001 0010和0100 1001分别作为有符号数的原码、反码和补码,将其转换为十进制数。

1.4 将十进制数125和-125分别转换成8位、16位和32位二进制补码。

1.5 用Windows计算器将十进制数4042322160和-252645136分别转换成32位无符号和有符号(补码)二进制数,再将结果转换成十六进制数,并分析结果。

1.6 分别求出二进制数1001 1110和0111 1000的“与”和“或”的结果。

1.7 8086处理器有哪几个16位通用寄存器?1.8 将双字类型数112233H(十六进制)存放在内存地址20000H中,占用哪几个字节单元,它们的地址和数值分别是什么?1.9 8086处理器用于运算的标志有哪几个?名称是什么?1.10 8086处理器分别执行8位二进制数01001010和11000010的加、减后,写出标志位CF、ZF、OF的值。

作业1答案1.1 010110011.2 146和92H1.3 原码:-18和73,反码:-109和73,补码:-110和73。

1.4 8位:0111 1101和1000 0011,16位:0000 0000 0111 1101和1111 1111 1000 0011,32位0000 0000 0000 0000 0000 0000 0111 1101和1111 1111 1111 1111 1111 1111 1000 0011。

1.5 1111 0000 1111 0000 1111 0000 1111 0000,F0F0F0F0H。

1.6 0001 1000和1111 1110。

1.7 AX、BX、CX、DX、SI、DI、BP、SP。

1.8 地址10000H存放33H,地址10001H存放22H,地址10002H存放11H,10003H存放0。

1.9 CF:进位/借位标志、ZF:零标志、SF:符号标志、PF:奇偶标志、OF:溢出标志、AF:半进位标志。

1.10 加运算后:CF=1,ZF=0,OF=0。

减运算后CF=1,ZF=0,OF=1。

作业22.1 8086汇编中的操作数有哪几类?存储器操作数寻址方式有几种?2.2 汇编语句分为指令和伪指令,汇编指令由哪几部分构成?这些部分中哪些部分是不可缺省的?2.3 传送类指令综合练习。

汇编语句片段如下,顺序执行过程中填写右侧寄存器和存储器内容。

MOV SI, 120 ; ①SI = ( )HMOV AX, 0AA70HMOV [SI], AXMOV BX, 3020 ; ②BX = ( )HADD BX, AXMOV [SI+2], BXMOV [SI+4], SI ; ③[SI] = ( )H (6 Byte)PUSH DSLDS CX, [SI+1] ; ④DS = ( )H,CX = ( )HPOP DSLEA AX, [SI+4] ; ⑤AX = ( )HMOV BX, SIMOV AL, 2XLAT ; ⑥AL = ( )H作业2答案2.1 操作数有立即数、寄存器数和存储器数3类。

存储器操作数寻址方式有直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址共5种。

2.2 由标号、操作码、操作数和注释共4部分构成,其中操作码是不可缺省的。

2.3 结果十六进制顺序为①SI=0078H,②BX=0BCCH,③[SI]=70H AAH 3CH B6H78H 00H,④DS=78B6H、CX=3CAAH,⑤AX=007CH,⑥AL=3CH。

作业33.1 8位和16位有符号数所能表示的数据范围的十进制值是多少?3.2 可以作为加、减指令的操作数的寄存器有哪些?3.3 运算指令综合练习。

汇编语句片段如下,顺序执行过程中填写右侧寄存器和标志位内容。

MOV AX, 1240 ; ①AX = ( )HMOV BX, 70HADD AX, BX ; ②AX = ( )H CF = ( ) OF = ( )SUB AX, 1000 ; ③AX = ( )H CF = ( ) OF = ( ) ZF = ( ) OR AX, BX ; ④AX = ( )HNOT AX ; ⑤AX = ( )H CF = ( ) OF = ( )ADD AL, AH ; ⑥AX = ( )H CF = ( ) OF = ( ) PF = ( ) XOR AL, BL ; ⑦AX = ( )H CF = ( ) OF = ( )MOV CL, 4SHL AL, 1 ; ⑧AX = ( )H CF = ( )ROR AL, CL ; ⑨AX = ( )H CF = ( )MUL AH ; ⑩AX = ( )H CF = ( ) OF = ( )作业3答案3.1 8位:-128~+127,16位:-32769~+32767。

3.2 8位寄存器:AL、AH、BL、BH、CL、CH、DL和DH共8个。

16位寄存器:AX、BX、CX、DX、SI、DI、BP和SP共8个。

3.3 按顺序结果为:①AX=04D8H,②AX=0548H、CF=0、OF=0,③AX=0160H、CF=0、OF=0、ZF=0,④AX=0170H,⑤AX=FE8FH、CF=0、OF=0,⑥AX=FE8DH、CF=1、OF=0、PF=1,⑦AX=FEFDH、CF=0、OF=0,⑧AX=FEFAH、CF=1,⑨AX=FEAFH、CF=1,⑩AX=ADA2H、CF=1、OF=1。

作业44.1 分析程序。

以下程序片断执行结束后AX、BX、CX和DX的值各是什么?将LOOP语句更换成LOOPZ后再计算。

MOV AX, 1MOV BX, 2MOV CX, 3MOV DX, 4b001: INC AXADD BX, AXSHL DX, 1LOOP b0014.2 编写汇编程序片段。

AL存放着一个ASCII码,如果是小写字母,将其转换成大写。

4.3 编写汇编程序片段。

假设DS指向一个数据区,在偏移量为0处开始存放一个英文字符串,以“$”字符结束,计算该字符串长度。

4.4 编写汇编程序片段。

通过INT 21H,0AH系统调用输入一个字符串,再通过INT 21H,09号系统调用输出,在DEBUG下验证(代码部分在偏移量100H处,数据存储在偏移量200H处)。

作业4答案4.1 LOOP:AX=4、BX=0BH、CX=0、DX=20HLOOPZ:AX=2、BX=4、CX=2、DX=84.2 CMP AL, 61HJB b002CMP AL, 7AHJA b002SUB AL, 20Hb002: ......4.3 MOV BX, 0MOV CX, 0c001: MOV AL, [BX]CMP AL, 24HJE c002INC BXINC CXJMP c001c002: ......4.4 MOV BX, 0200H ; 定义数据区指针MOV AL, 0FFH ; 数据区第一个字节送255MOV DX, BXMOV [BX], ALMOV AH, 0AH ; 0AH系统调用输入INT 21HMOV AL, [BX+1] ; 实际输入字节数送ALMOV AH, 0ADD BX, AX ; BX指向输入的最后一个字节的下一个单元ADD BX, 2MOV AL, 24H ; 送“$”符号MOV [BX], ALMOV AH, 9 ; 09号系统调用ADD DX, 2 ; DX指向实际的输入字符串首个单元INT 21H作业55.1 写出简化段定义程序框架。

5.2 定义数据区。

定义一个表格,一共100条记录,每一条记录包括5个字段,分别是“编号”(16位无符号数)、“姓名”(长度为20字节字符串)、“地址”(长度为64字节的字符串)、“邮编”(长度为6字节字符串)和“电话”(长度为20字节的字符串)。

5.3 编写完整程序。

连续显示按键的键码和其ASCII码的十六进制值,按ESC键退出。

5.4 编写完整程序(选作)。

通过INT 21H, 0AH系统调用从键盘输入一个字符串(ASCII码,包括英文字母、数字、空客、英文逗号和句号),最长255字节。

将每一句话第一个词首字母变为大写,其余全部为小写。

通过INT 21H,09输出结果。

作业5答案5.1 简化段定义程序框架.MODEL SMALL ; 定义程序模式:小模式.386.STACK ; 堆栈段,默认1024B.DATA ; 数据段开始…; 数据段.CODE ; 代码段开始.STARTUP ; 程序起始点,设定DS, SS…; 代码段.EXIT 0 ; 程序结束点,返回操作系统END ; 汇编结束5.2 采用结构Person表示一条记录信息Person STRUCT ; 结构名:personId WORD 0 ; 编号:字0~65535PName BYTE 20 DUP(0) ; 姓名:20个ASCII码或10个汉字Addr BYTE 64 DUP(0) ; 地址:64字节,32汉字Post BYTE 6 DUP(0) ; 邮编:6位数字Phone BYTE 20 DUP(0) ; 电话:20位ASCII码Person ENDS ; 结束PList Person 100 DUP(〈〉) ; 定义结构数组(表)5.3.MODEL SMALL.STACK.DATAs01 db ' ASCII code = 's02 db ?, ?, 'H', 0dh, 0ah, '$'.CODE.STARTUPkpress: mov ah, 1 ; 等待按键,获取按键的ASCII码int 21hcall tascii ; 转换AL成两位ASCII码,存放在AH和ALmov s02, ah ; 显示准备mov s02+1, almov ah, 9 ; 显示lea dx, s01int 21hcmp word ptr s02, 4231h ; 按键是ESC键吗jne kpress ; 如果不是ESC则转移到开始.EXIT 0tascii PROCmov ah, aland al, 0fhadd al, 30hcmp al, 39hjbe atof1add al, 7atof1: and ah, 0f0hshr ah,1shr ah,1shr ah,1shr ah,1add ah, 30hcmp ah, 39hjbe atof2add ah, 7 atof2: rettascii ENDPEND。

相关主题