好文档 - 专业文书写作范文服务资料分享网站

04732微型计算机及接口技术课后思考题与练习题04732微型计算机及接口技术课后思考题与练习(一至四)

天下 分享 时间: 加入收藏 我要投稿 点赞

15

NUM1 07H NUM2 01H NUM3 01H 43H 00H 05H 05H 41H ? 01H 05H 42H ? 05H 6) 对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?(P83)

FLDB DB ?

TABLEA DW 20 DUP(3 DUP(?)) TABLEB DB ‘ABCD’ 编号 命令 1 MOV AX,TYPE FLDB 2 MOV AX,TYPE TABLEA 3 MOV CX,LENGTH TABLEA 4 MOV DX,SIZE TABLEA 5 MOV CX,LENGTH TABLEB 6 MOV CX,LENGTHOF TABLEB 7 MOV CX,LENGTHOF TABLEA 8 MOV DX,SIZEOF TABLEA 9 MOV DX,SIZEOF TABLEB 结果 (AX)=1 (AX)=2 (CX)=20 (DX)=40 (CX)=1 (CX)=4 (CX)=60 (DX)=120 (DX)=4 7) 已知:(P78,79)

ORG 100H

ARY DW 3,4,5,6 CNT EQU $-ARY DB 7,8,CNT,9

则执行指令“MOV AX,ARY+2”和“MOV BX,ARY+10”后,AX=?,BX=?。 解:ORG是地址定位伪指令,$是地址计数器。ARY的起始地址是100H,,ARY+10的地址10AH对应的CNT数值为0AH,所以 AX=04H,BX=0AH

8) 指出下列指令的错误:

编号 1 指令 MOV AH,BX 错误 操作数位宽不一致 16

2 3 4 5 6 MOV [BX],[SI] MOV AX,[SI][DI] 7 操作数不允许都是存储器 SI和DI不允许同时作为变址寻址出现 MOV MYDATA[BX][SI],ES:AX 寄存器寻址不须段超越前缀 MOV BYTE PTR[BX],1000 1000超过BYTE上限127 MOV BX,OFFSET MYDATA[SI] OFFSET只对变量和标号表示的直接寻址有用,是在汇编阶段获取偏移地址,而指令“MOV AX,OFFSET NAMES[BX][SI]”中BX、SI只有在执行时才确定,所以无法如此组合取偏移地址。 MOV CS,AX 不能给CS和IP赋值 9) 根据下面的指令和伪指令序列执行完AX寄存器的内容是多少?

TAB DW 1,2,3,4,5,6

ENTRY EQU 6 MOV BX, OFFSET TAB ADD BX,ENTRY MOV AX,[BX] 答:(AX)= 4

;BX=x

;BX=x+6 ;

10) 阅读下列程序,回答问题。

BEGIN: IN AL, 20H MOV BL, AL IN AL, 30H MOV CL, AL MOV AX, 0 ADLP: ADD AL,BL ADC AH, 0 DEC CL JNZ ADLP HLT

(1) 本程序执行什么操作?

从20H读出的数据B,从30H读出的数据C,计算B乘以C (2) 执行结果存放在什么地方?

存在AX中

17

11)

序号 1 2 3 4 5 6 7 8 9 10 指出下列8088指令的错误:

指令 MOV 2000,BP PUSH 2000 POP CS XLAT BX MUL AX,BX SHL DX,8 IN AX,0382H OUT AX,20H MOVSB DI,SI LOOP CX 错误 目的操作数不能是立即数 PUSH操作数不能是立即数 POP操作数不能是CS XLAT无操作数(BX+AL) MUL只有一个操作数,另一个隐含在AL或AX中 移位数大于1时,移位数应放到CL;立即数只能是1 端口地址是16位,PORT必须是DX寄存器,其内容是16位端口地址 OUT目的操作数应为PORT,两操作数位置反了 MOVSB操作数均属隐含寻址,起始串地址在DS:SI中,目的串地址在ES:DI中,重复次数在CX中 LOOP指令中的CX操作数是隐含的 12) 从FIRST开始的100个单元中存放着一个字符串,结

束符‘$’。编程统计该字符串中字母‘A’的个数。

.MODEL SMALL .STACK .DATA

FIRST DB 'ABCDAYAAU$' MSG DB 'Count of A is ?$' .CODE START:

MOV AX,@DATA MOV DS,AX

MOV CX, 100 ;循环100次

MOV AL, 0 ;统计字母'A'的个数 MOV SI, OFFSET FIRST ;字符串起始索引 ALOOP:

CMP [SI],'$' ;检查是否到字符串结尾 JZ AEXIT ;是结尾就退出 CMP [SI],'A' ;检查是否是字符'A'

JNZ ANEXT ;不是A就调到下一个 INC AL ;是A就计数加1 ANEXT:

INC SI ;字符串索引加1 LOOP ALOOP

18

AEXIT:

LEA DX,MSG

ADD AL,30H ;数值转换成可显字符 MOV BX,DX

MOV 0EH[BX],AL ;替换字符串中的问号 MOV AH,9 INT 21H

MOV AX, 4C00H INT 21H END START

13) 请说明下面两段程序的功能。

(1) mov si,600h

mov di,601h mov ax,ds mov es,ax mov cx,256 std

repmovsb

从ds:600h开始向低地址复制字256次,将偶数位数值复制到奇数位 (2) cld

mov ax,0fefh mov cx,5

mov bx,3000h mov es,bx mov di,2000h repstosw

从内存地址32000h开始存入5个字,其值为0fefh

14) 15)

编写一个子程序,实现对一组代码进行奇校验。 编程从键盘输入4位十六进制数的ASCII码,并将其

转换为4位十六进制数存入DX寄存器中。

.MODEL SMALL .STACK .DATA

19

.CODE .STARTUP

MOV CX,4 ;输入4位 MOV DX,0 ;十六进制数 INPUT_LOOP:

MOV AH,1 ;输入一个字符到AL INT 21H

CALL ATOI ;将AL的十六进制字符转为数值

PUSH CX ;执行移位操作须用CL,先保留CX MOV CX,4 ;左移位数

SHL DX,CL ;目标值左移4位 MOV AH,0 ;将AX高8位归零

OR DX,AX ;DX后面追加新输入的数值 POP CX ;恢复CX LOOP INPUT_LOOP .EXIT

;子程序: ATOI

;功能: 16进制字符转成对应的数值 ;入口参数: AL ;出口参数: AL ATOI PROC

CMP AL,66H JG ERROR CMP AL,61H JGE LOWERA CMP AL,46H JG ERROR CMP AL,41H JGE UPPERA CMP AL,39H JG ERROR CMP AL,30H JGE NUMBER LOWERA: SUB AL,57H JMP OVER UPPERA:

SUB AL,37H JMP OVER NUMBER:

04732微型计算机及接口技术课后思考题与练习题04732微型计算机及接口技术课后思考题与练习(一至四)

15NUM107HNUM201HNUM301H43H00H05H05H41H?01H05H42H?05H6)对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?(P83)FLDBDB?TABLEADW20DUP(3DUP(?))TABLEBDB‘ABC
推荐度:
点击下载文档文档为doc格式
8046e3cchx6zh7s4eqk6667gj1yjqg01cjf
领取福利

微信扫码领取福利

微信扫码分享