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

钱晓捷-汇编语言程序设计课后习题(作业新)

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

精品文档

容:

Mydata segment ORG 100H VARW DW1234H,5678H VARB DB3,4 ALIGN 4 VARD DD12345678H EVEN

BUFF DB10 DUP(?) MESS DB'HELLO'

BEGIN: MOV AX,OFFSET MESS

MOV AX,TYPE BUFF+TYPE MESS+TYPE VARD

MOV AX,SIZEOF VARW+SIZEOF BUFF+SIZEOF MESS MOV AX,LENGTHOF VARW+LENGTHOF VARD MOV AX,LENGTHOF BUFF+SIZEOF VARW MOV AX,TYPE BEGIN MOV AX,OFFSET BEGIN 3.20利用简化段定义格式,必须具有.MODEL 语句。MASM定义了哪7种储存模式?TINY和SMALL模式创建什么类型(EXE或COM)程序?设计32位程序应该采用什么模式?

3.21源程序中如何指明执行的起始点?源程序应该采用哪个DOS功能调用,实现程序返回DOS?

3.22在SMALL储存模式下,简化段定义格式的代码段,数据段和堆栈段的默认段名,定位,组合以及类别属性分别是什么?

3.23如何用指令代码代替 .startup 和.exit指令,使得例题3.1a能够在MASM 5.x下汇编通过?

3.24创建一个COM程序完成例题3.1的功能。 3.25按下面的要求写一个简化段定义格式的源程序

(1)定义常量num,其值为5;数据段中定义字数组变量datalist,它的头5个字单元中依次存放-1,0,2,5和4,最后一个单元初值不变;

(2)代码段中的程序将datalist中头num个数的累加和存入datalist的最后一个字单元中。

3.26按下面的要求写一个完整段定义格式的源程序

(1)数据段从双字边界开始,其中定义一个100字节的数组,同时该段还作为附加段;

(2)堆栈段从节边界开始,组合类型为stack;

(3)代码段的类型是'code'指定段寄存器对应的逻辑段;主程指定从100H开始,给有关段寄存器付初始值;将数组元素全部设置为64H

3.28编制程序完成12H,45H,0F3H,6AH,20H,0FEH,90H,0C8H,57H和34H等10字节数据之和,并将结果存入字节变量SUM中(不考虑溢出)。

3.29结构数据类型如何说明?结构变量如何定义?结构字段如何引用?

3.30记录数据类型如何说明?记录变量如何定义?Width和mask操作符起什么作用?

16欢迎下载

精品文档

习题4

4.1例题4.2如果要求算术右移8位,如何修改程序?

4.2例题4.2如果要求算术左移7位,如何用移位指令实现?

4.3制作一个程序,将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL,BL,CL和DL寄存器。

答:

DATA SENGMENT AX1 DW ? AL1 DB 0 BL1 DB 0 CL1 DB 0 DL1 DB 0 DATA ENDS

CODE SENGMENT

ASSUME CS:CODE DS:DATA START: MOV AX,DATA

MOV DS,AX MOV AX,AX1 AND AL,0FH MOV DL,AL AND AH,0FH MOV DH,AH MOV AX,AX1 MOV CL,4 SHR AL,CL MOV BL,AL MOV CL,4 SHR AH,CL MOV AL,AH MOV CL,DH MOV AH,4CH INT 21H CODE ENDS END START

4.4编写一个程序,把键盘输入的一个小写字母用大写字母显示出来。

答:

DATA SENGMENT BUF DB 0 DATA ENDS

CODE SENGMENT

ASSUME CS:CODE DS;DATA

17欢迎下载

精品文档

START: MOV AX,DATA

MOV DS,AX MOV AH,1 INT 21H CMP AL,'a' JB N

CMP AL,’z’ JA N

SUB AL,20H

N: MOV DL,AL

MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START

4.5已知用于LED数码管显示的代码表为

LEDtable DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h DB 80h,90h,88h,83h,0c6h,0c1h,86h,8eh

它依次表示0到9,A到F这16个数码的显示代码。现编写一个程序现实将lednum中的一个数字转换成对应的LED显示代码。

4.6请问第2章例题2.41/2.43 /2.45/2.48的分支是单分支、双分支或多分支结构?

4.7分析第2章例题2.42的分支结构,画出流程图。

4.8如果在例题4.4的table中依次填入msg1到msg8,程序应该怎样修改? 4.9编制一个程序,把变量bufX和bufY中较大者存入bufZ;若两者相等,则把其中之一存入bufZ中。假设变量存放的是8位无符号数。

答:

.model small .stack .data

Mov al,bufz Mov bl,bufx Mov cl,bufy Cmp bl,cl Jne L

Mov bufz,bl Jmp exit L: jg L1

Mov bufz,cl Jmp exit L1: mov bufz,bl Exit:

18欢迎下载

精品文档

4.10设变量bufX为有符号16位数,请将它的符号状态保存在signX,即:如果X大于等于0,保存0;如果X小于0,保存一1(ffh)。编写该程序。

答:

.model small .stack .data

bufx dw ? signx db 0

Start: mov ax,data

mov ds,ax mov al,bufx cmp al,0 jge l

mov signx,-1 jmp exit

l: mov signx,0 exit: mov ah,4ch

int 21h end

4.11 bufX,bufY和bufZ是3个有符号十六进制数,编写一个比较相等关系的程序:

(1)如果这3个数都不相等,则显示0;

(2)如果这3个数中有两个数相等,则显示1; (3)如果这3个数都相等,则显示2; 答:

.model small .stack .data

Mov ax,bufx Mov bx,bufy Mov cx,bufz Cmp ax,cx Je L2

Cmp bx,cx Je L2

Mov dl,'0' Mov ah,2 Int 21h Jmp exit

L: cmp bx,cx

Je L1 L2: mov dl,1

Mov ah,2 Int 21h

19欢迎下载

精品文档

Jmp exit L1: mov dl,'2'

Mov ah,2 Int 21h exit

4.12分析第2章例题2.42,2.52,.2.53的结构,分别画出他们的流程图。 4.13例题4.8内外循环次数共是多少?如果要求按从大到小排序,程序如何修改?

4.14 串操作指令常要利用循环结构,现在不用串结构指令如何实现字符串String1内容传送到字符串Sring2,字符串长度为count. 答:

DSEG SEGMENT LEA SI,string1

String1 DB’abcdefg’ LEA SI, string2 count =$-string mov CX, count string2 DB count DUP(0) L: MOV AL,[SI] DSESE SEGMENT MOV[DI],AL SSEG SEGMENT STACK /NC SI

STK DB count DUP(0) /NC DI SSEG ENDS LOOP L CSEG SEGMENT MOV AH, 4CH ASSUME DS: DSEG, INT 21H

ES:ESEG, SS:SSEG, CSEG ENDS CS:CSEG END START START: MOV AS , DSEG MOV DS, AX MOV AX, ESEG MOV ES, AX MOV AS,SSEG MOV SS, AX

MOV SP ,LENGTH STK

4.15不用串操作指令求主存0040H:0开始的一个64KB物理段中共有多少个空格?

4.16 编程实现把键入的一个字符,用二进制形式(0/1)显示出它的ASCII代码值 答:

MOV AH ,1 INT 21H MOV BL, AL MOV AH, 2 MOV DL,‘=’ INT 21H MOV CX , 8

AGAIN:SHL BL,1

20欢迎下载

钱晓捷-汇编语言程序设计课后习题(作业新)

精品文档容:MydatasegmentORG100HVARWDW1234H,5678HVARBDB3,4ALIGN4VARDDD12345678HEVENBUFFDB10DUP(?)
推荐度:
点击下载文档文档为doc格式
3pg581fmgx8xzko02xoc4ddq3430jm00yca
领取福利

微信扫码领取福利

微信扫码分享