标签:练习题 汇编 ends code 包含 data 存放 dw segment
一、有下面的一组学生成绩数据,编程序求出Tomy同学的总分,最后结果存放在AX中(更强功能还可以继续期待哦!)
nam | ‘Tomy’ | ‘John’ | ‘Mary’ | ‘Jone’ |
---|---|---|---|---|
c | 78 | 82 | 75 | 92 |
asm | 66 | 79 | 95 | 87 |
math | 78 | 93 | 74 100 | |
chinese | 90 | 78 | 56 | 63 |
请在下面程序基础上完成功能:
要求在程序中必要处要写上注释。写程序前,可以画规范的流程图以整理思路。
assume cs:code,ds:data
data segment
nam db 'Tomy', 'John', 'Mary', 'Jone'
c dw 78, 82, 75, 92
asm dw 66, 79, 95, 87
math dw 78, 93, 74, 100
chinese dw 90, 78, 56, 63
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,4c00h
int 21h
code ends
end start
提示:Tomy同学的总分是138H。
二、 计算
其中
和
是两组数据,其中的所有数均为80以内的正数。
要求在程序中必要处要写上注释。写程序前,可以画规范的流程图以整理思路。
提示:
编程解决问题是一项有创造性的工作,学编程就是塑造创造力的过程。本题目可以设置不同的数据存储方案,决定了不同的编程方案。
下面罗列几种,供同学们选用:
(1)将、两组数据存放在固定的内存位置,如2000H:0H处——谨慎使用这种方案,除非特殊情况(在需要使用这种方案的场合,这种方法往往也是最精妙的)。
(2)在程序中指定两个段存放X和Y,如为data1段中存放X向量的8个数据,data2段中存放Y向量的8个数据。计算结果可以存储在代码段的起始字单元中,也可以设计方案存放于另外定义的专门段中,或者前面定义的任一段中。在程序中,data1当数据段,data2当附加段即可。
下面的代码可以作为参考(当然可以改动)。
assume cs:code,ds:data1
data1 segment ;此段存放X
db 12,16,18,12,4,7,8,16
data1 ends
data2 segment ;此段存放Y
db 3,11,7,9,15,17,7,1
data2 ends
code segment
dw 0 ;此处存放求和结果,这是可能方案中的一种
start:
//代码开始
mov ax,4c00h
int 21h
code ends
end start
(2)在一个数据段中存入所有的数据。在访问时,其段地址均在DS中,用两个寄存器分别指标xi和yi的偏移地址(BX常用于表示偏移地址,还可以用BP、SI、DI寄存器)。计算结果也可以存储在X和Y之后。
下面的代码可以作为参考(当然可以改动)。
assume cs:code,ds:data
data segment
db 12,16,18,12,4,7,8,16 ;X
db 3,11,7,9,15,17,7,1 ;Y
dw 0 ;此处存放求和结果
data ends
code segment
start:
mov ax,4c00h
int 21h
code ends
end start
标签:练习题,汇编,ends,code,包含,data,存放,dw,segment 来源: https://blog.51cto.com/sxhelijian/2817174
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。